无法更新EntitySet'...',因为它有一个DefiningQuery

时间:2012-09-07 10:55:54

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

我正在使用MVC 4和C#4.5与EntityFramework 4。

我已经设置了一个简单的多对多表:

tblAdminUser -> tblAdminUserRole <- tblAdminRole

当我尝试向admin用户添加角色时,出现以下错误:

  

“无法更新EntitySet'tllAdminUserRole',因为它有一个DefiningQuery,元素中不存在支持当前操作的元素。”

我使用的代码是:

this.Role = new tblAdminRole()
{
    Name = "__role__",
};

context.tblAdminRoles.Add(this.Role);
context.SaveChanges();

this.AdminUser.tblAdminRoles.Add(this.Role);
context.SaveChanges();

2 个答案:

答案 0 :(得分:5)

更新数据库,将m2m表中的表的外键对设置为主键。 然后将模型更新为数据库。

答案 1 :(得分:3)

请检查tblAdminUserRole中的所有 ID字段是否已在SQL数据库中设置为主键。然后更新您的模型。

如果实体框架无法找出主键,它将生成SELECT语句,但无法创建相应的INSERTUPDATE和{{ 1}}陈述。