我在EF 5中有以下内容:
var a = context.Posts.Include(x => x.Pack).Select(x => x.Pack.Id).ToList();
Run Code Online (Sandbox Code Playgroud)
这有效.然后我尝试在我的通用存储库中复制它:
public IQueryable<T> Include<T>(Expression<Func<T, Boolean>> criteria) where T : class
{
return _context.Set<T>().Include(criteria);
}
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,我无法执行以下操作:
var b = repository.Include<Post>(x => x.Pack).Select(x => x.Pack.Id).ToList();
Run Code Online (Sandbox Code Playgroud)
我收到错误:
无法将类型'Data.Entities.Pack'隐式转换为'bool'
我怎么解决这个问题?
我应该在Include()方法中更改什么?
我正在练习MVC 5,在我的应用程序中,我有一个控制器方法,应该更新给定用户配置文件的地址信息.
我通过使用上下文对象访问数据库来做到这一点,我首先想到的是将数据库行复制到对象,进行更改,然后使用该AddOrUpdate()方法将其放回.但是,我只看到一种Add()方法.
所以我做了以下事情:
public ActionResult EditBillingDetails(EditBillingDetailsViewModel model)
{
if (ModelState.IsValid)
{
string id = User.Identity.GetUserId();
ApplicationDbContext db = new ApplicationDbContext();
db.Users.Single(u => u.Id == id).FirstName = model.FirstName;
db.Users.Single(u => u.Id == id).LastName = model.LastName;
db.Users.Single(u => u.Id == id).Email = model.Email;
db.Users.Single(u => u.Id == id).Address = model.Address;
db.Users.Single(u => u.Id == id).City = model.City;
db.Users.Single(u => u.Id == id).ZIP = model.ZIP;
db.Users.Single(u => u.Id == id).Country = model.Country;
db.SaveChanges();
return RedirectToAction("Manage", new { Message …Run Code Online (Sandbox Code Playgroud)