【问题标题】:optional optional dependent relationship EF codefirst可选 可选 依赖关系 EF代码优先
【发布时间】:2013-05-09 09:09:22
【问题描述】:

我有以下型号:

User
id 
Document Doc1
Document Doc2


Document
Id
Data
Name

在实体框架中建模,例如:

 modelBuilder.Entity<Document>()
                        .HasOptional(e => e.User)
                        .WithOptionalPrincipal(e => e.Doc1);

 modelBuilder.Entity<Document>()
                        .HasOptional(e => e.User)
                        .WithOptionalPrincipal(e => e.Doc2);

这个想法是用户不需要拥有这两个文档。 但是,当我尝试使用以下代码删除文档时:

 using (var ctx = new DealersContext("Db"))
    {
       var doc = ctx.Documents.FirstOrDefault(d => d.Id == docId);
       if (doc != null)
       {
         ctx.Documents.Remove(doc);
         ctx.SaveChanges();
        }

    }

我收到以下错误: DELETE 语句与 REFERENCE 约束“FK_dbo.DealersUsers_dbo.Documents_IdDocument_Id”冲突。冲突发生在数据库“DealersDb”、表“dbo.DealersUsers”、列“IdDocument_Id”中。如何解决这个问题?

【问题讨论】:

    标签: c# entity-framework-4 ef-code-first


    【解决方案1】:

    文档仍有经销商(或经销商仍有此文档) 导致数据库在从数据库中删除文档时需要将'IdDocument_Id设置为null。

    在这种情况下,“IdDocument_Id”不可为空。这导致了这个错误。您还需要从数据库中删除此关系,或使经销商 > 文档关系可为空

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-31
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 2012-03-06
      • 1970-01-01
      相关资源
      最近更新 更多