0

EF CTP 5 Code First를 사용합니다. 이 같은 모델에 대한 데이터베이스를 생성하는 EF를 요구하는 경우에 당신을 위해 적절한 외래 키 관계를 만들 것입니다 :EF에서 외래 키 속성을 제거하는 방법은 무엇입니까?

public class Parent 
{ 
    public ICollection<Child> MyChildren { get; set; } 
} 

public class Child 
{ 
    public Parent MyParent { get; set; } 
} 

자식 테이블 거 같은 세대의 결과로 MyParent_Id 필드 같은 것을 가지고있다. 이제 역방향 문제가 있습니다. 비슷한 간단한 모델을 작성해야하는 Db 스키마가 있습니다. 비슷한 간단한 방법으로 어떤 명시 적 외래 키 속성없이 의미합니다. 그것을 할 방법이 있습니까?

내가 찾은 매핑을 수행하는 유일한 방법은 다음과 같습니다. 그러나 피하려고하는 모델에 공용 속성 MyParentId가 있음을 의미합니다. 그래서 그것을 피하는 방법?

public class Child 
{ 
    [Column("ParentID")] 
    public int MyParentId { get; set; } 

    [ForeignKey("MyParentId")] 
    public Parent MyParent { get; set; } 
} 

덕분에 사전에

+1

CTP5 이후 3 개의 버전이 출시되었으므로 즉시 [Entity Framework 4.1 Update 1] (http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=26825)로 업그레이드해야합니다. –

+0

Ladislav, 좋은 소식. 나는 갱신을 할 것이다. 이 정보 주셔서 감사합니다 – YMC

답변

2

방법 중 하나는 속성을 사용하지 않고 코드에 매핑을 정의하는 것입니다. 당신의 "컨텍스트"클래스 (DbContext에서 파생 한)에서 :이 경우

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    base.OnModelCreating(modelBuilder); 

    modelBuilder.Entity<Child>() 
     .HasRequired(c => c.MyParent) 
     .WithMany() 
     .Map(c => c.MapKey("MyParent_Id")); 
} 

, "MyParent_Id는"자식 테이블의 열 이름이 아닌 Child 클래스의 모든 속성의 이름입니다 .

+0

그것은 작동합니다! 나는 속성이 같은 일을 할 수 있다고 생각했지만, EF 유창한 환경 설정이 관계를 올바르게 설정하는 유일한 방법 인 것 같습니다. 감사. – YMC

관련 문제