EF一对多(可空)删除

时间:2018-10-10 22:33:23

标签: c# asp.net sql-server asp.net-mvc entity-framework

我正在MVC控制器中删除父实体,并收到此错误:

  

[SqlException]:DELETE语句与REFERENCE约束“ FK_dbo.MessageThread_dbo.Listings_ListingID”冲突。数据库“ MyDB”的表“ dbo.MessageThread”的列“ ListingID”中发生了冲突。   该语句已终止。   在System.Data.SqlClient.SqlConnection.OnError(SqlException异常,布尔型breakConnection,Action 1 wrapCloseInAction)

MessageThread表在EF中的映射如下:

// Relationships
this.HasOptional(t => t.Listing)
        .WithMany(t => t.MessageThreads)
        .HasForeignKey(d => d.ListingID);

ListingID(子级)中的MessageThread(父级)列为nullable

我看过this post,但是答案却没用。

根据this,EF映射不应该删除父记录并将ListingID中的子MessageThread值设置为null吗?

1 个答案:

答案 0 :(得分:0)

您无法从此表中删除

dbo.MessageThread", column 'ListingID'

因为您有此表的外键

FK_dbo.MessageThread_dbo.Listings_ListingID

在继续操作之前,请先删除外键字段值。

或者您可以通过Cascading Deletion完成 看看这个链接

Cascading Deletion