Entity framework 如何向实体框架中的现有实体添加新关联(多对多)?
我的数据库中有3个表:“Projects”、“Users”和“UsersInProjects”。在“UsersInProjects”表中,只有两个字段,没有主键。 MS实体框架由数据库生成类,即项目中有用户集合,用户中有项目集合。太棒了! 但我无法将项目添加到用户和用户添加到项目:Entity framework 如何向实体框架中的现有实体添加新关联(多对多)?,entity-framework,many-to-many,Entity Framework,Many To Many,我的数据库中有3个表:“Projects”、“Users”和“UsersInProjects”。在“UsersInProjects”表中,只有两个字段,没有主键。 MS实体框架由数据库生成类,即项目中有用户集合,用户中有项目集合。太棒了! 但我无法将项目添加到用户和用户添加到项目: user.Projects.Add(project); Entities.SaveChanges(SaveOptions.AcceptAllChangesAfterSave); 或 或 比如说 每次尝试时,我都会遇
user.Projects.Add(project);
Entities.SaveChanges(SaveOptions.AcceptAllChangesAfterSave);
或
或
比如说
每次尝试时,我都会遇到异常:“无法更新EntitySet'UsersInProjects',因为它有一个DefiningQuery,并且元素中不存在支持当前操作的元素。”
我是否可以向“UsersInProjects”表中添加一个不带存储过程且不带主键的关联
我明白了!下一个查询do table和EF在数据库中正常工作:
使用[BugTracker]
去
将ANSI_空值设置为ON
去
在上设置带引号的\u标识符
去
创建表[dbo]。[UserProject](
[Users_Id][int]不为空,
[Projects_Id][int]不为空,
约束[PK_UserProject]主键非聚集
(
[用户Id]ASC,
[项目Id]ASC
)在[主]上打开(PAD\u INDEX=OFF,STATISTICS\u norecocomputer=OFF,IGNORE\u DUP\u KEY=OFF,ALLOW\u ROW\u LOCKS=ON,ALLOW\u PAGE\u LOCKS=ON)
)在[小学]
去
使用检查添加约束[FK\U UserProject\U Project]外键([Projects\U Id])更改表[dbo].[UserProject]
引用[dbo].[Project]([Id])
去
ALTER TABLE[dbo].[UserProject]检查约束[FK_UserProject_Project]
去
使用检查添加约束[FK\U UserProject\U User]外键([Users\U Id])更改表[dbo].[UserProject]
引用[dbo].[User]([Id])
去
ALTER TABLE[dbo].[UserProject]检查约束[FK\U UserProject\U User]
GO实体框架要求每个表必须具有主键才能更新。在您的情况下,必须修改连接表并将两个FK定义为PK。除了存储过程之外,没有其他方法
project.Users.Add(user);
Entities.SaveChanges(SaveOptions.AcceptAllChangesAfterSave);
user.Projects.Add(project);
project.Users.Add(user);
Entities.SaveChanges(SaveOptions.AcceptAllChangesAfterSave);