Я пытаюсь создать общее репо и иметь некоторые проблемы. У меня есть следующий интерфейс:public RepoResult create (T item) {} Получить/прочитать значение PK элемента
public interface IGenRepo<T, TKey> where T : class
{
IQueryable<T> Items { get; }
T find(TKey pk);
RepoResult delete(TKey pk);
RepoResult create(T item);
RepoResult update(T item);
RepoResult save();
}
А вот класс, который реализует этот интерфейс:
public class EFGenRepo<T, TKey> : IGenRepo<T, TKey> where T : class
{
private PortalEntities context = new PortalEntities();
public IQueryable<T> Items { get { return context.Set<T>().AsQueryable<T>(); } }
public T find(TKey pk){}
public RepoResult delete(TKey pk){}
public RepoResult create(T item){
if (item == null) return RepoResult.Failed(RepoMessages.paramIsNull());
if (true) {//HELP HERE PLEASE, something like: if(item.PKHasNoValue == true)
context.Set<T>().Add(item);
return save();
} else {
return RepoResult.Failed(RepoMessages.PKIsNotZeroAtCreate());
}
}
public RepoResult update(T item){}
public RepoResult save(){
try {
context.SaveChanges();
return new RepoResult();
} catch (Exception e){
return RepoResult.Failed(RepoMessages.saveChangesFailure(e));
}
}
private RepoResult save(T item){}
}
В моем создании метода я хочу, чтобы проверить значение PK элемента передается методу. Я знаю, что могу проверить это на своем контроллере, прежде чем вызывать код, но я хочу сделать это вот так! Таким образом, позволяет сказать, что я студент класса, как показано ниже:
public partial class student
{
public int id { get; set; }
public string naam { get; set; }
}
И па студенческий объект с идентификатором 0, теперь я хочу, если заявление оценить, верно. Если у объекта-ученика уже есть идентификатор, он должен быть равен false. Но как я могу это проверить. Я полагаю, что мне нужно использовать что-то вроде кода ниже, но у меня нет навыков для этого:
typeof(TKey).Name;
item.GetType().Name;
Любая помощь очень ценится!