繁体   English   中英

实体框架代码优先参考约束问题

[英]Entity Framework Code First Reference constraint issue

我的模型出现问题,并试图删除记录。 我已将其缩小以尝试显示我遇到的问题

我有一个名为CollectedBags的实体,具有一个ID和名称。

然后,我有一个名为BankingRun的实体,其中包含CollectedBags的列表

public virtual List<CollectedBags> Bags { get; set; }

该模型自动在两者之间添加关系,并且在数据库中向收集的包中添加一列以引用BankingRun。

当我想删除BankingRun而完全不影响CollectedBags表时,会出现问题。 CollectedBags记录并不总是属于BankingRun。 我尝试删除记录的任何事情显然都会导致两个表之间的冲突,但是我对实体框架的缺乏了解使我陷入困境,而没有编写一些SQL来物理删除CollectedBags中的Banking Run ID

public class CollectedBags
{
    public long CollectedBagsId { get; set; }
    public string Name { get; set; }
}

public class BankingRun
{
    public long BankingRunId { get; set; }

    public DateTime DateTimeVisited { get; set; }

    public virtual List<CollectedBags> Bags { get; set; }
}

然后,我尝试使用多个CollectedBags创建BankingRun后删除它

对于Fluent API,请使用以下代码:

 protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {

    modelBuilder.Entity<User>()
        .HasOptional(a => a.UserDetail)
        .WithOptionalDependent()
        .WillCascadeOnDelete(false);
    }

这只是一个例子,但重要的是.WillCascadeOnDelete(false);

基本上,这将防止在删除一个实体时所有其他相关实体也被删除。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM