기존 데이터베이스가 있으며 새 개체와 소품을 이전 테이블과 열에 매핑합니다. 여태까지는 그런대로 잘됐다. 우리는 성공적으로 매핑 된 many-to-many 관계를 가진다. 중간 테이블에는 추가 데이터가 들어 있습니다. 중간 테이블을 객체에 매핑하려고하면 이미 매핑이 정의되어 있다는 예외가 생깁니다. 관계의 어느 한쪽에서 매핑을 제거하면 테이블이 누락되었다는 오류가 발생합니다 (ofc, 우리는 그냥 예상합니다). NHibernate로 쉽게 할 수 있고 EF가 정말 많은 기능을 잃어 버렸다고 생각하기 시작했습니다. 그래서 제발, 제가 틀렸다고 말하면 우리는 EF로 그 일을 할 수 있습니다.EF CF : 추가 정보가있는 다 대다 관계
감사합니다.
EDIT : 여기는 실패한 더미 샘플입니다.
class User
{
public ICollection<User> Followers{get;set;}
}
class UserRelation
{
public User User{get;set;}
public User Follower{get;set;}
public DateTime CreatedOn{get;set;}
}
사용자 매핑
modelBuilder
.Entity<User>()
.HasMany<User>(user => user.Followers)
.WithMany()
.Map(m =>m.MapLeftKey("user_id").MapRightKey("follower_id")
.ToTable("user_follower"));
사용자 관계 매핑
modelBuilder
.Entity<UserRelation>()
.ToTable("user_follower");
modelBuilder
.Entity<UserRelation>()
.HasOptional<User>(f => f.User)
.WithRequired().Map(m => m.MapKey("user_id"));
modelBuilder
.Entity<UserRelation>()
.HasOptional<User>(f => f.Follower)
.WithRequired().Map(m => m.MapKey("follower_id"));
modelBuilder
.Entity<UserRelation>()
.Property(entity => entity.CreatedOn)
.HasColumnName("created_on");
예외
지정한 스키마가 유효하지 않습니다. 오류 : (67,6) : 오류 0019 : 스키마 'dbo'및 'user_follower'테이블이있는 EntitySet 'UserUser'가 이미 정의되었습니다. 각 EntitySet은 고유 한 스키마 및 테이블을 참조해야합니다.
여러 대다 관계를 매우 성공적으로, 당신은 우리에게 몇 가지 예를 보여 아마도 경우 문제가있다, 우리가 도울 수있다 –
예, 그걸 깨달았습니다. 샘플이 올라갔습니다. – mynkow