簡體   English   中英

實體框架代碼首先通過外鍵進行映射

[英]Entity framework code first mapping by foreign keys

我有以下表格:

Document (Id int PK, LatestVersionId int FK)
DocumentVersion (Id int PK, DocumentId int FK)

一個文檔可以有一個或多個版本,而一個版本屬於一個文檔。 我有以下課程:

public class Document {
    public int Id {get;set;}
    public int LatestVersionId {get;set;}
    public DocumentVersion LatestVersion {get;set;}
}
public class DocumentVersion {
    public int Id {get;set;}
    public int DocumentId {get;set;}
    public Document Document {get;set;}
}

當前的映射:

HasOptional(t => t.LatestVersion).WithRequired(t => t.Document).Map(t => t.MapKey("DocumentId")) // DocumentMap
HasRequired(t => t.Document).WithOptional(t => t.LatestVersion).Map(t => t.MapKey("LatestVersionId")); // DocumentVersionMap

我收到以下異常:System.InvalidOperationException:在類型'DocumentVersion'上聲明的導航屬性'Document'已配置有沖突的映射信息。

我應該如何映射這種關系?

您可以按以下方式更新類定義:

public class Document {
    [Key]
    public int Id {get;set;}

    public List<DocumentVersion> DocumentVersions {get;set;}
}

public class DocumentVersion {
    [Key]
    public int Id {get;set;}

    [ForeignKey("Document")] 
    public int DocumentId {get;set;}

    public Document Document {get;set;}
}

流利的API:

modelBuilder.Entity<Document>()
            .HasMany(d => d.DocumentVersions)
            .WithRequired(version => version.Document)
            .HasForeignKey(version => version.DocumentId);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM