我的數據庫中有3個表格:「項目」,「用戶」和「UsersInProjects」。在「UsersInProjects」表中只有兩個字段,沒有主鍵。 MS Entity Framework通過數據庫生成類,即項目中的用戶集合和用戶中的項目集合。這很棒! 但我不能給用戶和用戶添加項目到項目:如何添加一個新的關聯(多對多)到實體框架中的現有實體?
user.Projects.Add(project);
Entities.SaveChanges(SaveOptions.AcceptAllChangesAfterSave);
或
project.Users.Add(user);
Entities.SaveChanges(SaveOptions.AcceptAllChangesAfterSave);
或
user.Projects.Add(project);
project.Users.Add(user);
Entities.SaveChanges(SaveOptions.AcceptAllChangesAfterSave);
在每次嘗試時我都有例外:「無法更新EntitySet'UsersInProjects',因爲它具有DefiningQuery,並且元素中不存在元素以支持當前操作。」
我可以在沒有存儲過程的情況下添加關聯,並且可以向「UsersInProjects」表添加主鍵?
我明白了!下一查詢正確地做表和EF工作與數據的基礎上:
USE [錯誤追蹤] GO
SET ANSI_NULLS ON GO
SET QUOTED_IDENTIFIER ON GO
CREATE TABLE [DBO]。 [UserProject]( [Users_Id] [int] NOT NULL, [Projects_Id] [int] NOT NULL, CONSTRAINT [PK_UserProject] PRIMARY KEY NONCLUSTERED ( [Users_Id] ASC, [Projects_Id] ASC )WITH(PAD_INDEX = OFF,STATISTICS_NORECOMPUTE = OFF,IGNORE_DUP_KEY = OFF,ALLOW_ROW_LOCKS = ON,ALLOW_PAGE_LOCKS = ON)ON [PRIMARY] )ON [PRIMARY]
GO
ALTER TABLE [DBO]。[UserProject] WITH CHECK ADD CONSTRAINT [FK_UserProject_Project]外鍵([Projects_Id]) 參考文獻[DBO]。[項目]([ID]) GO
ALTER TABLE [ dbo]。[UserProject] CHECK CONSTRAINT [FK_UserProject_Project] GO
ALTER TABLE [DBO]。[UserProject] WITH CHECK ADD CONSTRAINT [FK_UserProject_User]外鍵([Users_Id]) 參考文獻[DBO]。[用戶]([ID]) GO
ALTER TABLE [ dbo]。[UserProject] CHECK CONSTRAINT [FK_UserProject_User] GO