如何将实体添加到现有实体MVC 2 EF

问题描述:

我正在创建一个MVC 2网站。我是初学者。我创建了一个使用EF的模型。关系在用户表和产品表(一对多关系)之间。我能够创建新用户并使用linq将它们保存在数据库中。我的问题是如何将产品添加到现有用户。我从下面的代码开始,但它不起作用。 Intellisense没有看到querryuser.Product我的代码有什么问题,或者正确的方法是什么。如果有人能帮助我,这将是伟大的如何将实体添加到现有实体MVC 2 EF

public void Insert(Product obj) 
    { 
     if (HttpContext.Current.Session["userid"] != null) 
     { 
      string userid2 = HttpContext.Current.Session["userid"].ToString(); 

      var queryuser = from p in entities.Users 
          where p.UserID == userid2 
          select p; 

      queryuser.Product.Add(obj); 
      entities.Users.Add(queryuser); 
      entities.SaveChanges(); 

     }               
    } 

我从我的控制器调用此方法。

+0

假设'UserID'是主键,你想'VAR queryuser = entities.Users.Find(userid2)' – Jonesopolis 2014-10-07 15:35:43

+0

其捐赠我的错误:System.Data.Objects.ObjectSet 没有包含'Find'的定义,也没有包含扩展方法'Find'的定义... – CodeEngine 2014-10-07 15:44:33

+0

您定义'entities'的文章 – Jonesopolis 2014-10-07 15:51:57

queryuser是一个IQueryable,你把它当作一个单独的对象来对待。

你可以尝试更换:

queryuser.Product.Add(obj); 
entities.Users.Add(queryuser); 

user = queryuser.First(); 
user.Product.Add(obj); 
entities.Users.Add(user); 
+0

它给了我一个错误:System.Linq.IQueryable 不包含'ForEach'的定义... – CodeEngine 2014-10-07 15:41:41

+0

@ omachu23 - 是的,我忘了它返回一个IQueryable和不是IEnumerable--我正在更新答案 – antlersoft 2014-10-07 15:46:40

+0

我不明白为什么它没有工作。我试过这个:var firstuser = entities.Users.First(); firstuser.Products.Add(obj); entities.SaveChanges();它的工作,但这不是我想要的。任何想法 – CodeEngine 2014-10-07 17:07:15