繁体   English   中英

可选的可选依赖关系EF codefirst

[英]optional optional dependent relationship EF codefirst

我有以下型号:

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'中。 怎么解决这个问题?

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

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

暂无
暂无

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

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