.net 实体框架:定义查询错误

.net 实体框架:定义查询错误,.net,sql,linq,entity-framework,entity-framework-5,.net,Sql,Linq,Entity Framework,Entity Framework 5,我有一个带聚集索引的连接表 CREATE TABLE [dbo].[MeetingTags] ( [MeetingId] INT NOT NULL, [TagId] INT NOT NULL, CONSTRAINT [FK_MeetingTags_Tags] FOREIGN KEY ([MeetingId]) REFERENCES [dbo].[Meetings] ([Id]), CONSTRAINT [FK_Tags_MeetingTags] FOREI

我有一个带聚集索引的连接表

CREATE TABLE [dbo].[MeetingTags] (
    [MeetingId] INT NOT NULL,
    [TagId]     INT NOT NULL,
    CONSTRAINT [FK_MeetingTags_Tags] FOREIGN KEY ([MeetingId]) REFERENCES [dbo].[Meetings] ([Id]),
    CONSTRAINT [FK_Tags_MeetingTags] FOREIGN KEY ([TagId]) REFERENCES [dbo].[Tags] ([Id])
);

GO
CREATE CLUSTERED INDEX [cdxMeetingTags]
    ON [dbo].[MeetingTags]([MeetingId] ASC, [TagId] ASC);
显然,它有一个公共字段,即tablemeetings和标记,所以我可以通过这种方式在它上面添加记录

var tag= new Tag()
{
  Title = "Meeting Title",
};

meeting.Tags.Add(tag);
看起来不错,但是在插入新标记记录时,我在
Context.SaveChanges()中遇到了此错误

Unable to update the EntitySet 'MeetingTags' because it has a DefiningQuery and no <InsertFunction> element exists in the <ModificationFunctionMapping> element to support the current operation
无法更新EntitySet“MeetingTags”,因为它有一个DefiningQuery,并且元素中不存在支持当前操作的元素
标记具有主键

我认为在
MeetingTags
中放置主键是不可能的,因为它会破坏EF中Meeting和Tags的多对多关系,并且还会在语法中添加
Meeting.MeetingTags.Tags
,而不仅仅是
Meeting.Tags


任何解决方法?

都可以创建复合主键并保留FK约束,从而解决我的问题

CREATE TABLE [dbo].[MeetingTags] (
    [MeetingId] INT NOT NULL,
    [TagId]     INT NOT NULL,
    CONSTRAINT PK_UserGroup PRIMARY KEY NONCLUSTERED ([MeetingId], [TagId]),
    CONSTRAINT [FK_MeetingTags_Tags] FOREIGN KEY ([MeetingId]) REFERENCES [dbo].[Meetings] ([Id]),
    CONSTRAINT [FK_Tags_MeetingTags] FOREIGN KEY ([TagId]) REFERENCES [dbo].[Tags] ([Id])
);

我搜索了一下,似乎复合主键就是解决方案。谁能告诉我如何在MeetingTags表中创建复合主键?EF/SQL Azure是否支持它?