实体框架代码第一参考约束问题

时间:2013-10-29 15:46:02

标签: c# entity-framework

我的模型出现问题并尝试删除记录。我已经减少它以试图显示我遇到的问题

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

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

的列表

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

此模型会自动添加两者之间的关系,并在数据库中向collectbags添加一列以引用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

1 个答案:

答案 0 :(得分:1)

使用Fluent API时,请使用以下代码:

 protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {

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

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

当你删除一个实体时,所有其他相关内容也会被删除,基本上就是这样。