EF关系增加了新记录而不是链接

时间:2013-10-15 14:51:16

标签: entity-framework c#-4.0

我知道你会告诉我以前曾经问过这件事。也许我没有正确搜索,但我找不到答案。

var userRepo = new UserRepository();
var user = new User {Name = "Bob"};
userRepo.Save(user);

var roleRepo = new RoleRepository();
var role = new Role {Name = "My role"};
roleRepo.Save(role);

user.Roles.Add(role); //I expect this to link user to role, but it adds a second role
userRepo.Save(user);

也许问题出现在我的存储库中,但我怀疑:

public void Save(Role role)
{
    if (role.ID == 0)
         context.Roles.Add(role);
    else
    {
         var currentRole = context.Roles.Find(role.ID);
         context.Entry(currentRole).CurrentValues.SetValues(role);
    }
    context.SaveChanges();

 }

1 个答案:

答案 0 :(得分:1)

正如科林所指出的,这是一个上下文问题。 UserRepository不知道插入数据库的新角色。