2010-11-23 4 views
0

엔티티의 서브 테이블을 업데이트 할 수있는 메소드를 생성하려고합니다. 나의 이해는 새로운 엔티티, 나는이 같은 아이를 추가한다는 것입니다 :LINQ : 엔티티에 하위 테이블을 아직 작성하지 않은 경우 만들기

Entity.ChildEntityENT.Value1 = MyValue; 
Entity.ChildEntityENT.Value2 = MyValue; 

그러나 나는 내가 작업 할 기본 클래스가 있습니다

ChildEntityENT child = new ChildEntityENT(); 
Entity.ChildEntityENT = child; 

그리고 그때부터 나는 이런 식으로 액세스 할 수 있습니다에

다양한 Entity 및 ChildEntityENT 유형이 있습니다. 나의 초기 생각은이 라인을 따라 뭔가를하는 것이지만, 나는 그것을 작동시키는 것처럼 보이지 않는다. 기본적으로 개발자가 기본 Entity에서 ChildEntityENT를 가리 키도록 람다 식을 사용하게하고 내 메서드는 ChildEntityEnt를 확인하고 이미 존재하지 않는 새 빈 복사본을 인스턴스화합니다. 그것이 존재한다면, 그것은 아무것도 할 필요가 없습니다.

public void CreateIfNull(Expression<Func<Entity, object>> Child) 
{ 
    if (Entity.Child == null) 
    { 
     ChildENT = new ChildENT(); 
     Entity.ChildENT = ChildENT; 
    } 
} 

나는이 공을 완전히 놓친 경우 알려 주시기 바랍니다. 나는 모든 일을하는 더 쉬운 방법을 찾고 있습니다. LINQ가 값을 할당하기 전에 새 ChildEntityENT를 수동으로 만들지 않았 으면 좋겠다. 실제로이 사람과 정확히 같은 일을 할 노력하고있어 :

편집 Adding a child entity to parent entityset

답변

0

I는 다음과 같이 해결 끝났다.

public void CreateChildIfNull(LambdaExpression Child) 
    { 
     Type ChildType = Child.Body.Type; 
     var NewChild = Activator.CreateInstance(ChildType); 
     Entity.GetType().GetProperty(ChildType.Name).SetValue(Entity, NewChild, null); 
    } 
관련 문제