我有点问题。当我将一个新项添加到我的数据库(EF)时,我有一个UpdateEception:无法更新EntitySet'UserRoles',因为它有一个DefiningQuery,元素中不存在任何元素来支持当前操作。
我的桌子很小。
Users :
- [PK] UserID
- Login
- Password
- Email
- IsActive
Roles :
- [PK] RoleID
- Name
UserRoles :
- [FK] UserID
- [FK] RoleID
获取方法
User u = db.Users.Single(x => x.Login == "scott");
工作正常,但不插入:/我尝试了很多方法。我尝试将PK添加到UserRoles,它可以工作,但不会像它一样。关系将很多 - >一个 - >许多,不是很多,我必须有一个额外的课程。我不知道如何解决这个问题。
我的实体类太简单了。角色类中的列表和用户类中的列表是虚拟的。
public class TestDBEntity : ObjectContext
{
public ObjectSet<Role> Roles { get; set; }
public ObjectSet<User> Users { get; set; }
public TestDBEntity()
: base("name=TestDBEntities", "TestDBEntities")
{
ContextOptions.LazyLoadingEnabled = true;
this.Roles = CreateObjectSet<Role>();
this.Users = CreateObjectSet<User>();
}
}
答案 0 :(得分:0)
您必须在UserRoles表中创建复合键(UserID,RoleID)。没有其他方法,因为没有定义的主键,表被映射为只读视图。它仍然会建模为多对多关系,但您必须先从模型中删除实体,然后通过数据库更新再次添加它们。