我跟进了本教程here使用Autofac依赖注入器和工作单元实现Repository模式。
现在我正在尝试从数据库中检索艺术家对象。
使用Dbcontext就像使用_db.Artists.Find(id)
一样简单
现在因为我实现了Generic Repository也是新的Repository patern。我不确定查询应该是什么
在我的艺术家控制器中
return View(this._artistDetailsRep.SingleOrDefault(p => p.ArtistID= id));
抱怨说exassion树不能是赋值运算符。
这是通用方法:
public virtual TEntity SingleOrDefault(
Expression<Func<TEntity, bool>> where, params Expression<Func<TEntity, object>>[] includeProperties)
{
IQueryable<TEntity> query = this.AsQueryable();
query = PerformInclusions(includeProperties, query);
return query.SingleOrDefault(where);
}
我的查询应该如何检索我编写id的对象?
由于
答案 0 :(得分:3)
您的问题与EF或Autofac或存储库模式无关,但您滥用SingleOrDefault
:您需要使用双等于==
而不是单个等号=
:
return View(this._artistDetailsRep.SingleOrDefault(p => p.ArtistID == id));
单个等号=
表示赋值(在此上下文中无效),但在您的情况下,您需要进行比较,因此您需要双等于==
。
在这种情况下,您的SingleOrDefault
来电将转换为:“如果艺术家不存在,则给我唯一一位ArtistID
等于id
或null
的艺术家。”