2016-09-07 35 views
0
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

,如果你想通過其主鍵查找實體只需使用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); 
+0

感謝,它的工作原理 – Mike