实体框架 - 一个类映射到与多两个表一个关系
我有代表一个页面和标签的连接的一类,它看起来或多或少是这样的:实体框架 - 一个类映射到与多两个表一个关系
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个表格:TagLinks
和TagNames
。第一个是Id
,PageId
和TagId
,第二个是TagId
和TagName
。
我希望标签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
表被添加到引用TagId
在TagNames
表
回答:
试试这个:
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