实体框架不是在多对多关系表中添加行

时间:2015-04-09 16:30:59

标签: c# entity-framework

我有一个包含以下表格的数据库。

用户: ID用户所

模块: IdModule

多对多关系导致表UserModule。 ID用户 IdModule

我想将一个已经存在的模块添加到用户,因此实体框架应该做的唯一事情是在UserModule中添加一行。

但问题是它正在尝试向数据库添加模块,从而导致主键错误。

这是代码。

public static void LoadModuleInUser(string login,Module module) 
        {
                //dbcontext
                using (webentities db= new webentities())
                {
                    User user= db.users.First(u => u.login== login);
                   user.Modules.Add(module);
                    db.SaveChanges();
                }
        }

2 个答案:

答案 0 :(得分:0)

我们需要更多信息。请显示错误。模块实体是如何制作的?也许你的某个地方没有自动增量键。 (我无法发表评论所以我不得不将其作为答案发布)

答案 1 :(得分:0)

你能改变一下吗?

User user= db.users.First(u => u.login== login);
user.Modules.Add(module);
db.SaveChanges();

到此:

User user= db.users.Include("Modules").First(u => u.login== login);
user.Modules.Add(module);
db.SaveChanges();