Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc TEntity Remove方法在首先使用数据库创建的多对多关系上失败_Asp.net Mvc_Entity Framework - Fatal编程技术网

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

Asp.net mvc TEntity Remove方法在首先使用数据库创建的多对多关系上失败,asp.net-mvc,entity-framework,Asp.net Mvc,Entity Framework,我使用的是实体框架6.1.3和数据库优先的方法 它是一个小型数据库,标记和BoxedItems之间有多对多关系,名为ItemsTags的表保存着这种关系 我在使用脚手架代码删除BoxedItem时遇到一个异常: db.BoxedItems.Remove(boxedItem); db.SaveChanges(); SqlException:DELETE语句与引用冲突 约束“FK_项stags_项”。数据库中发生冲突 “TimeBox”,表“dbo.ItemsTags”,列“IdItem” 关系表

我使用的是实体框架6.1.3和数据库优先的方法

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

我在使用脚手架代码删除BoxedItem时遇到一个异常:

db.BoxedItems.Remove(boxedItem);
db.SaveChanges();
SqlException:DELETE语句与引用冲突 约束“FK_项stags_项”。数据库中发生冲突 “TimeBox”,表“dbo.ItemsTags”,列“IdItem”

关系表代码如下所示。BoxedItem的PK必须是Guid,标记的PK必须是INT标识(1,1)

如果我的BoxedItem PK是INT-IDENTITY(1,1),EF自动生成的代码会立即运行吗?EF似乎更喜欢自动生成的代码


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

这根本不是异常告诉您的。您的
ItemsTags
表有一个不可为空的外键,该外键指向要从中删除的表。为了删除该项,您需要首先为该外键设置一个新值,或者使其为空。您还可以添加一个删除级联,以便删除有问题的
ItemsTags
行。非常感谢!!!这很有道理,只需添加DELETE CASCADE就可以解决它。
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])
);