我试图想出一种通用的方法来通过我的存储库中的 Id 拉取一个对象。在我的数据库中,通常所有的 ID 都是主键并且是整数类型。可能有一种情况,在这种情况下不正确,但我仍然想为所有对象保持相同的方法。这是我的界面现在的样子:
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();
}
我已经看到了一些代码,其中使用反射来获取对象的 ID,然后解析该特定对象的所有对象(不理想)。我也看到过这样的事情:
TE GetById(Expression<Func<TE, bool>> predicate);
我从这里得到了这个想法。
我还不太熟悉表达式,不确定这是否适合我。我想它会,因为我可以包含这个表达式:
var foo = GetById(f => f.Id == 1);
但我想这不是真正的 GetById,而是我可以使用任何表达式来获得我想要的,对吧?
任何想法都会受到赞赏。