2014-09-04 2 views
0

적절한 클래스 매핑을 위해 Fluent 메서드를 올바르게 조합하는 데 문제가 있습니다. 여기에 기본적으로 내가 할 노력하고있어 무엇을 :사용자 지정 열 이름이있는 단면 구성

Person table: PersonID, HomeAddressID (nullable), WorkAddressID (nullable) 
Address table: AddressID, Street, etc... 

Person 클래스는 Address HomeAddressAddress WorkAddress 재산 아닌 ID에 대한 정수 속성이 있습니다.

Address 클래스에는 관련된 Person 엔티티에 대한 속성이 없습니다.

이 시나리오에서는 온라인으로 예제를 찾지 못했지만 올바른 조합을 찾지 못했습니다. 코드 우선 구성은 항상 나를 혼란스럽게 만들었습니다.

이것은 내가 발견 한 예제 중 가장 가까운 것이지만 Invalid column name 'HomeAddressID'을 얻고 있습니다. 이는 아마도 관계의 잘못된면을 매핑하고 있다고 말합니다.

public class PersonConfiguration : EntityTypeConfiguration<Person> 
{ 
    // other mappings 

    HasOptional(p => p.HomeAddress) 
     .WithOptionalPrincipal() 
     .Map(x => x.MapKey("HomeAddressID")); 
    HasOptional(p => p.WorkAddress) 
     .WithOptionalPrincipal() 
     .Map(x => x.MapKey("WorkAddressID"));  
} 

올바른 경로에 있습니까?

답변

1

PersonAddress 및 WorkAddress ID를 Person 클래스에 추가 할 수 있습니까? 그렇다면,이 작품은 나를 위해 ...

public class Person 
{ 
     public int? HomeAddressID { get; set; } 
     private Address _homeAddress; 
     public Address HomeAddress 
     { 
      get { return _homeAddress; } 
      set 
      { 
       _homeAddress= value; 
       HomeAddressID = value != null ? (int?)value.HomeAddressID : null; 
      } 
     } 
} 

public class PersonConfiguration : EntityTypeConfiguration<Person> 
{ 
    HasOptional(a => a.HomeAddress).WithMany().HasForeignKey(p => p.HomeAddressID); 
} 
+0

그 작품처럼 고맙습니다,하지만 난 의도적으로 그 속성을 노출하지 않습니다. 실생활에서는 이것이 업데이트 가능한 뷰이며 뷰의 트리거를 사용하여 기본 컬럼이 업데이트되지 않습니다. 개발자가 해당 열에 값을 할당하고 저장을 기대할 수있는 것처럼 보이게하고 싶지는 않습니다. –

관련 문제