Я пытаюсь найти общий способ получить объект по его идентификатору в моем хранилище.В моей базе данных, как правило, все идентификаторы являются первичными ключами и имеют тип integer.В будущем может быть случай, когда это не так, но я все еще хочу сохранить один и тот же метод для всех объектов.Вот как теперь выглядит мой интерфейс:
public interface IRepository<TE>
{
void Add(TE entity);
void AddOrAttach(TE entity);
void DeleteRelatedEntries(TE entity);
void DeleteRelatedEntries(TE entity, ObservableCollection<string> keyListOfIgnoreEntites);
void Delete(TE entity);
int Save();
//this is where I am stuck
TE GetById();
}
Я видел некоторый код, где отражение используется для получения идентификатора объекта, а затем анализирует все объекты для этого специального объекта (не идеальный).Я также видел что-то вроде этого:
TE GetById(Expression<Func<TE, bool>> predicate);
Я получил эту идею от здесь .
Я еще не очень знаком с выражениями и не уверен, будет ли этоработать на меня или нет.Думаю, так и было, потому что я мог бы включить это выражение:
var foo = GetById(f => f.Id == 1);
Но я полагаю, что это на самом деле не GetById, а скорее я мог бы использовать любое выражение, чтобы получить то, что я хочу, верно?
Любые мысли будут оценены.