나는 페이지와 태그의 연결을 나타내는 클래스를 가지고 있으며 더 많거나 적은 같은 외모 : 내 데이터베이스에서엔티티 프레임 워크 - 일 개 관계에 많은 두 테이블에 하나 개의 클래스를 매핑
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를 외래 키로 지정하여 하나의 태그 이름에 많은 태그 링크를 할당 할 수 있습니다.
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");
});
}
}
가 어떻게 그것을 하나 개의 관계에 많은 작업을해야합니까 그것은 나에게 다음과 같이 내장되어 잘못된 외래 키를 준다?
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의 코드 첫 번째 규칙이 인수 할 수 있도록하고 해결 : 나는 외래 키가
@mjwills 나는 내 질문을 편집하여 데이터베이스에 생성 된 내용을 게시했습니다. – krajol