2012-10-14 2 views
0

데이터베이스에서 블로그 데이터를 검색하기 위해 Entity Framework와 함께 작업하고 있습니다. 나는 "BlogPost"클래스와 "Author"클래스를 가지고있다. 한 명의 작성자는 많은 블로그 게시물을 보유 할 수 있지만 Author 객체 자체에는 블로그 게시물의 목록이 포함되어 있지 않습니다. Author 객체와 관련하여 모든 블로그 게시물과 독립적입니다.Entity Framework - 하위 개체의 외래 키

Author 클래스의 인스턴스는 BlogPost의 속성으로 포함됩니다. 모든 저자에게는 저자가 있습니다. 내 데이터베이스에서 특정 블로그를 가져 와서 Author 객체에 해당 데이터로 채우고 싶습니다. 내가 객체를 매핑하려면 다음 코드를 사용하여 내 블로그 게시물 클래스에 AuthorId 속성을 포함하여이 작업을 수행하기 위해 관리해야 :

this.HasRequired(t => t.Author).WithMany().HasForeignKey(x => x.AuthorId); 

내가하고 싶은 무엇, 그러나, 같은 일을 할 수있을 것입니다 AuthorId 속성을 모델에 직접 포함하지 않아도됩니다. 그 이유는 Author 객체가 이미 해당 ID를 포함하고 있기 때문에 동일한 정보를 두 번 반복하기 때문입니다. 나는이 라인을 따라 뭔가를하고 싶습니다

this.Property(t => t.Author.Id).HasColumnName("id_user"); 
this.HasRequired<TwitterUser>(t => t.Author).WithMany().HasForeignKey(t => t.Author.Id); 

그래서 저자 개체 자체와 함께 블로그 게시물 객체를 중복 AuthorID를 저장하지 않고 저자 하위 개체를 검색 않는 방법이?

답변

1

사용중인 구문을 "외래 키 연결"이라고하며, EF 4에서 여러 가지 문제를 해결하기 때문에 도입되었습니다. 예를 들어 FK 연관을 사용하면 계단식 삭제를 자동으로 수행 할 수 있습니다.

당신은 여기에 대한 자세한 내용을보실 수 있습니다 :

http://blogs.msdn.com/b/efdesign/archive/2009/03/16/foreign-keys-in-the-entity-framework.aspx

당신은 여전히 ​​간단한 탐색 속성, 일을 옛날 방식을 할 수 있습니다. 그러나 약간 다른 구문이 필요할 것입니다. 한 가지 독립적 인 협회는 당신이 양쪽 끝에 네비게이션 속성을 요구하며, 당신은 오직이 일방적 인 방식만을 원한다고 말했습니다. 따라서 작성자 엔티티에 연관을 추가하거나 FK 연관을 사용하면 문제가 발생합니다.

또한 유용 우리 자신의 라디 Mrnka에 의해이 문서 찾을 수 있습니다

:

또한

http://www.ladislavmrnka.com/2011/05/foreign-key-vs-independent-associations-in-ef-4/

는이를 보이더라도 그것은 EF 팀에 따라, 독립 협회는 FK 협회보다 훨씬 더 수행 할 수 있습니다,주의를 보기 생성으로 제한되므로 일회성 시작 비용 (앱 또는 앱 도메인을 시작할 때마다)입니다. 또한, 작은 모델 당신은 아마 그것을 통지하지 않습니다 :

http://msdn.microsoft.com/en-us/data/hh949853.aspx

편집 :

으로

가 @Slauma에 의해 지적했다, 당신은 .MAP 속성 등을 사용하여 독립적 인 관계를 매핑 할 수 있습니다 그래서 :

this.HasRequired(t => t.Author).WithMany().Map(m => m.MapKey("AuthorId")); 
+1

하나의 탐색 속성만으로도 독립적으로 작동합니다. 기본 FK (밑줄,'Author_Id' 등으로)에'HasRequired (t => t.Author) .WithMany()'를 사용하거나'.Map (m => m.MapKey "AuthorId"))'FK 이름을 매핑합니다. – Slauma

+0

@Slauma - 흠 .. 흥미로운. 내가 읽은 모든 것은 독립적 인 협회가 양쪽 끝에 네비게이션 속성을 요구한다고 말합니다. –

관련 문제