2013-02-25 3 views
3

등의 기본 키 같은 나는 Product 클래스 1-1 매핑되는 두 개의 클래스EF 코드 첫째 : 외래 키

public class Product 
{ 
    public Guid Id { get; set; } 
    public string ProductDetails { get; set; } 
} 

public class SpecialProductDetails 
{ 
    public Guid Product_Id { get; set; } // PK and FK to Product class 
    public string SpecialName { get; set; } 
    public string SpecialDescription { get; set; } 

    public virtual Product Product { get; set; } 
} 

SpecialProductDetails을 가지고 선택 사항입니다. 동일한 PrimaryKey 및 ForeignKey를 공유합니다. 유창함 API에서

내가 (SpecialProductDetails 내부)과 같은 관계

public SpecialProductDetails() 
{ 
    HasKey(p => p.Product_Id); 
    HasRequired(p => p.Product).WithMany().HasForeignKey(p => p.Product_Id).WillCascadeDelete(true); 
} 

이 나에게 데이터베이스를 생성하는 노력이 오류를 제공 매핑하고

\ tSystem.Data.Entity.Edm.EdmAssociationEnd : : Multiplicity는 'SpecialProductDetails_Product_Source'관계에서 'SpecialProductDetails_Product_Source'역할에서 유효하지 않습니다. 종속 역할은 주요 속성을 참조하므로 종속 역할의 다중도의 상한은 '1'이어야합니다.

EF 코드 우선에서 열을 PK 및 FK로 설정할 수 있습니까?

+0

확인 후 : http://blog.bennymichielsen.be/2011/06/02/entity-framework-4-1-one-to-one-mapping/ – MarcinJuraszek

+0

@lc하는 경우 .WithOptional()을 사용하면 어떻게 FK를 지정할 수 있습니까? – Catalin

답변

6

난 당신이 이미 해결 한 확신 해요,하지만 난 같은 문제를 쳐서 내가 찾은 솔루션이었다

public SpecialProductDetails() 
    { 
     HasKey(p => p.Product_Id); 
     HasRequired(p => p.Product).WithOptional(); 
    } 

"그것은 주목할 가치가 우리는 일대일로 매핑 할 때 유창한 API와 연관되어 있기 때문에, 우리는 HasForeignKey 메소드와 일대 다 연관을 매핑 할 때 외래 키를 지정할 필요가 없습니다. EF는 기본 키에 일대일 연관 만 지원하기 때문에 자동으로 기본 키에있는 데이터베이스의 관계. "

이 문서 밖으로 http://weblogs.asp.net/manavi/associations-in-ef-4-1-code-first-part-3-shared-primary-key-associations

+0

예, 일대일 관계에서 이미 'PK'로 간주되기 때문에 'FK'를 지정할 필요가 없습니다. – Catalin

+0

위대한 작품입니다. 가능한 경우 더 많은 점수를 주겠습니다. –