2013-01-03 4 views
1

내가 확장 할 때 부분 클래스를 사용하는 엔티티 프레임 워크 (5)을 사용하여, C#으로 .NET 내가 이해에서부분 클래스 5

4.5, 법인에 대한 모범 사례가되어 일하고 또는 모델이 재구성 될 때 변경 사항을 잃지 않도록 기본 기능을 수정합니다.

ItemTable: 
ID 
Name 

ParentChildTable: 
ChildID (FK to ItemTable.ID) 
ParentID (FK to ItemTable.ID) 

데이터베이스에서 EDMX 건물이 제대로 FK 관계에 읽고 적절한 객체 참조를 만들고 다음과 같이

나는 다른 테이블에 두 FKS있는 테이블을 가지고있다. 안타깝게도 탐색 속성의 이름이 잘못 지정되었습니다. ItemTable 및 ItemTable1. 네비게이션 속성의 이름을 바꾸고 싶습니다. 디자이너를 통해 그렇게 할 수는 있지만 부분 클래스에서 할 수있는 방법이 있는지 궁금해했습니다.

최종 목표는 단순히 자동 생성 된 ItemTable 및 ItemTable1이 아닌 ChildItem 및 ParentItem이라는 탐색 속성을 갖는 것입니다. 부분 클래스 생성, 속성 장식 등을 완전히 이해합니다.이 탐색 속성 시나리오를 처리하는 방법에 대한 올바른 방향의 포인터가 필요합니다.

감사합니다.

답변

0

당신이 @jere하지만 [NotMapped] 데이터 주석을 추가하는 대답을 시도 할 수처럼 뭔가를 할 수 있습니다.

0

이전에는 재귀 관계로이 문제가 있었지만 왜 코드에서 변경 했습니까 ?? 디자이너 자체에서 작업하는 것이 훨씬 낫다고 생각합니다. 변경 한 내용을 훨씬 쉽게 추적 할 수 있습니다.

즉, 나는 코드의 속성을 "이름을 바꿀"수 없다고 말합니다. EF는 EF는 DB와 함께 작동 할 때이 새 속성을 매핑하지 않도록 당신이 생각

public partial class ItemTable 
{ 
    public ItemTable ChildItem 
    { 
     get 
     { 
      return this.ItemTable; 
     } 
    } 

    public ItemTable ParentItem 
    { 
     get 
     { 
      return this.ItemTable1; 
     } 
    } 
} 
+0

엔티티 모델 수정시 부분 클래스를 사용하는 것과 같은 이유 때문에 디자이너에서 사용하지 않는 이유가 있습니다. 모델을 다시 작성해야 할 경우 설계자 변경 사항이 제대로 처리되지 않습니다. 예를 들어 테이블을 변경하고 삭제하고 다시 추가하여 업데이트해야하는 경우 사용자 정의 nav 속성이 손실됩니다. –

+0

또한 귀하의 대답은 효과가 있지만, 원하는 것의 절반 만 수행합니다. 저조한 네비게이션 속성을 삭제하거나 적어도 인텔리 센스에서 숨길 수있는 방법을 알고 있습니까? –

+0

디자이너에 나타나기 만하면 Intellisense의 속성으로 표시됩니다. 그리고 내가 읽은 것에서 유일한 방법은 디자이너에서 이름을 직접 변경하거나 적절하지 않은 이름의 속성을 적합한 이름으로 묶는 것입니다. – jere