实体框架 - 一个类映射到与多两个表一个关系

我有代表一个页面和标签的连接的一类,它看起来或多或少是这样的:实体框架 - 一个类映射到与多两个表一个关系

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。第一个是Id,PageIdTagId,第二个是TagIdTagName

我希望标签id是一个外键,所以很多标签链接可以分配给一个标签名称。我试过但我不知道如何正确配置。它给了我这是建立这样的错误外键:

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的代码优先约定接管并解决问题给你。

以上是 实体框架 - 一个类映射到与多两个表一个关系 的全部内容, 来源链接: utcz.com/qa/264837.html

回到顶部