簡體   English   中英

實體框架-將一個類映射到具有多對一關系的兩個表

[英]Entity Framework - mapping one class to two tables with many to one relation

我有一個代表頁面和標簽的連接的類,它看起來或多或少像這樣:

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

    public int PageId { get; set; }

    public int TagId { get; set; }

    public string TagName { get; set; }
}

在我的數據庫中,我希望有2個表: TagLinksTagNames 第一個帶有IdPageIdTagId ,第二個帶有TagIdTagName

我希望標簽ID是外鍵,因此可以將許多標簽鏈接分配給單個標簽名稱。

我嘗試使用EntityTypeConfiguration但是我不知道如何正確配置它。 它給了我這樣錯誤的外鍵:

ALTER TABLE [dbo].[TagNames]  WITH CHECK ADD  CONSTRAINT [FK_dbo.TagNames_dbo.TagLinks_TagId] FOREIGN KEY([TagId])
REFERENCES [dbo].[TagLinks] ([TagId]);

ALTER TABLE [dbo].[TagNames] CHECK CONSTRAINT [FK_dbo.TagNames_dbo.TagLinks_TagId]

我從這個開始:

public class TagLinkEntityConfiguration : EntityTypeConfiguration<TagLink>
{
    public TagLinkEntityConfiguration()
    {
        HasKey(e => e.Id);
        HasKey(e => e.TagId);

        Property(e => e.Id).HasColumnName(nameof(TagLink.Id));
        Property(e => e.PageId).HasColumnName(nameof(TagLink.PageId));           
        Property(e => e.TagId).HasColumnName(nameof(TagLink.TagId));
        Property(e => e.TagName).HasColumnName(nameof(TagLink.TagName));

        Map(m =>
        {
            m.Properties(e => new
            {
                e.Id,
                e.PageId,                    
                e.TagId
            });
            m.ToTable("TagLinks");
        });

        Map(m =>
        {
            m.Properties(e => new
            {
                e.TagId,
                e.TagName
            });
            m.ToTable("TagNames");
        });
    }
}

如何使其與多對一關系有效? 我猜的外鍵應該被添加TagLinks表格來引用TagIdTagNames

試試看:

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

    public int PageId { get; set; }

    public int TagId { get; set; }

    public Tag Tag { get; set; }
}

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

    public string Name { get; set; }

    public virtual ICollection<TagLink> TagLinks { get; set; }
}

跳過TagLinkEntityConfiguration定義,讓EF的代碼優先約定為您接管並解決問題。

暫無
暫無

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

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