簡體   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