TEntity Remove方法在首先使用数据库创建的多对多关系上失败

时间:2017-04-13 13:49:13

标签: asp.net-mvc entity-framework

我正在使用Entity Framework 6.1.3和数据库第一种方法。

这是一个小型数据库,在Tags和BoxedItems之间有多对多关系,名为ItemsTags的表保存着这种关系。

使用scaffolded代码删除BoxedItem时出现异常:

db.BoxedItems.Remove(boxedItem);
db.SaveChanges();
  

SqlException:DELETE语句与REFERENCE冲突   约束" FK_ItemsTags_Items"。冲突发生在数据库中   " TimeBox",table" dbo.ItemsTags",column' IdItem'。

关系表代码如下。 BoxedItem的PK需要是Guid,而Tags是INT IDENTITY(1,1)。

CREATE TABLE [dbo].[ItemsTags] (
    [IdItem] UNIQUEIDENTIFIER NOT NULL,
    [IdTag]  INT              NOT NULL,
    CONSTRAINT [PK_ItemsTags] PRIMARY KEY CLUSTERED ([IdItem] ASC, [IdTag] ASC),
    CONSTRAINT [FK_ItemsTags_Tags] FOREIGN KEY ([IdTag]) REFERENCES [dbo].[Tags] ([Id]),
    CONSTRAINT [FK_ItemsTags_Items] FOREIGN KEY ([IdItem]) REFERENCES [dbo].[BoxedItems] ([Id])
);

如果我的BoxedItem PK是INT IDENTITY(1,1),EF自动生成的代码是否可以开箱即用?对于自动生成的代码,EF似乎更喜欢它。

除了自定义SQL指令之外,还有更聪明的方法可以删除BoxedItem吗?

0 个答案:

没有答案