TEntity temp = null;
foreach (TEntity item in _context.Set<TEntity>())
{
if (keyPropertyInfo.GetValue(item).ToString() == primaryKey)
{
temp = item;
}
}
我在DataAccessBase类中编写代码,并希望通过primaryKey获取TEntity,但效率不高,_context.Set将从表中获取所有记录。所以我试过了:
TEntity temp = _context.Set<TEntity>().Where(e => keyPropertyInfo.GetValue(e).ToString() == primaryKey).FirstOrDefault();
但它不起作用......任何人都可以帮助我吗?
答案 0 :(得分:0)
如果要通过主键查找实体,只需使用find方法:
public TEntity Get<TEntity>(string primaryKey) where TEntity : class
{
using (var _context = new MyDbContext())
{
return _context.Set<TEntity>().Find(primaryKey);
}
}
如果您需要通过其他属性找到它,可以将表达式发送到函数,如下所示:
public TEntity Get<TEntity>(Expression<Func<TEntity, bool>> predicate) where TEntity : class
{
using (var _context = new MyDbContext())
{
return _context.Set<TEntity>().Where(predicate).FirstOrDefault();
}
}
并称之为:
repo.Get<MyModel>(x=>x.SomeProperty == someValue);