我有以下的(大大刪節)通用倉庫等級:如何用字符串where子句查詢DbSet?
public class Repository<TEntity> : IRepository<TEntity> where TEntity : class
{
private DbSet<TEntity> _entitySet;
private NewExternalsContext _dbContect;
public Repository(NewExternalsContext dbContext)
{
_dbContect = dbContext;
_entitySet = _dbContect.Set<TEntity>();
}
public virtual TEntity Get(object objectId)
{
// TODO Figure out how to use 'id' to build an Expression<Func<TEntity, bool>>.
throw new NotImplementedException();
}
public virtual TEntity FindOne(Expression<Func<TEntity, bool>> where)
{
return _entitySet.FirstOrDefault(where);
}
}
我與public virtual TEntity Get(object objectId)
方法的問題是,因爲該倉庫是通用的,我不知道TEntity
有任何id字段,或者是什麼叫做。我能做的最好的檢查是否有Id
字段,這是我最常用的id字段名稱。那麼,我該如何請說_entitySet.Where("Id = " + objectId)
?我有public virtual TEntity FindOne(Expression<Func<TEntity, bool>> where)
方法,但是當我只想通過id
得到一個對象時,我很想寫出一個完整的lambda表達式。
的DbSet類有一個[查找方法](http://msdn.microsoft.com/en-us/library/gg696418(v = vs.103).aspx)它可以做你想做的。它根據主鍵找到實體。 – nemesv 2013-03-10 12:24:02