【问题标题】:How to add an entity to an existing entity MVC 2 EF如何将实体添加到现有实体 MVC 2 EF
【发布时间】:2014-10-07 15:22:05
【问题描述】:

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

 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();
        }                                                         
    }

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

【问题讨论】:

  • 假设UserID是主键,你想要var queryuser = entities.Users.Find(userid2)
  • 它给了我错误:System.Data.Objects.ObjectSet 不包含“查找”的定义并且没有扩展方法“查找”...
  • 发布你定义entities的地方
  • 私有 TradeDBEntities1 实体 = new TradeDBEntities1();
  • 我不明白为什么它不起作用。我试过这个: var firstuser = entity.Users.First(); firstuser.Products.Add(obj);实体.SaveChanges();它有效,但这不是我想要的。任何想法

标签: c# entity-framework asp.net-mvc-2


【解决方案1】:

queryuser 是一个 IQueryable,您将其视为单个对象。

您可以尝试替换:

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

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

【讨论】:

  • 它给了我一个错误:System.Linq.IQueryable 不包含'ForEach'的定义...
  • @omachu23 - 是的,我忘了它返回的是 IQueryable 而不是 IEnumerable - 我正在更新答案
  • 我不明白为什么它不起作用。我试过这个: var firstuser = entity.Users.First(); firstuser.Products.Add(obj);实体.SaveChanges();它有效,但这不是我想要的。任何想法
  • 我用了你的答案,我只是删除了最后一行并使用entities.SaveChanges();它有效,我希望这是正确的做法。感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多