데이터 일치를 사용하여 many to may 관계를 매핑하고자하는데, 이것이 나의 경우입니다. 데이터 주석을 통한 CF m-to-n 관계
는 접합 테이블이 소스에서 다른 FK 이름을 포함 보는 바와 같이 나는 다음 표Foo:
FooId int identity
FooName varchar(max) not null
Bar:
BarId int identity
BarName varchar(max) not null
FooBarRelationships
TheBarId int
TheFooId int
을 말해봐. 또한 테이블의 이름은 다른
나는 순서대로 테이블 FooBarRelationships
이 접합 테이블 및 TheBarId
가되었는지 확인하는 데이터 주석을 사용하여 내 수업을 수정하는 방법
[Table("Foo")]
public class Foo {
[Key]
public Int32 FooId { get; set; }
public String FooName { get; set; }
public IEnumerable<Bar> Bars { get; set; }
}
[Table("Bar")]
public class Bar {
[Key]
public Int32 BarId { get; set; }
public String BarName { get; set; }
public IEnumerable<Foo> Foos { get; set; }
}
다음과 같이 내 클래스는 Bar
테이블과 TheFooId
에서 외래 키는 Foo
테이블에서 외래 키입니까?
P.
IEnumerable<T>
으로 선언 된 탐색 속성은 ICollection<T>
이 아니어야합니다.
나는
public class BarMap : EntityTypeConfiguration<Bar> {
public BarMap() {
this.HasMany(t => t.Foos)
.WithMany(t => t.Bars)
.Map(m => {
m.ToTable("FooBarRelationships");
m.MapLeftKey("TheBarId");
m.MapRightKey("TheFooId");
});
}
}
이 다음과 같이 보이는 나에게 다음과 같은 오류를 제공지도 클래스를 사용하여 매핑 시도했습니다. 방법
유형 인수 'System.Data.Entity.ModelConfiguration.EntityTypeConfiguration < 바 > .HasMany <TTargetEntity> (System.Linq.Expressions.Expression < System.Func < 바, ICollection에 <TTargetEntity> > >) '는 사용법에서 유추 할 수 없습니다. 형식 인수를 명시 적으로 지정하십시오.
IEnumeralbe<T>
을 ICollection<T>
으로 변경하지 않고이 오류를 해결할 수있는 방법이 있으면 환영합니다.
답장을 보내 주셔서 감사합니다. 나는 ICollection을 복원하고 그것이 의도를 깨뜨리지 않는 방식으로 솔루션을 재구성했습니다. 유창한 API를 사용하지 않고 표 메타 데이터를 제공하는 것과 데이터 주석을 사용하는 것에 관해서 질문의 첫 번째 부분에 대답 할 수 있습니까? – Oybek