2010-11-23 4 views
0

Я пытаюсь создать метод, который может обновлять подэлемент объекта независимо от того, является ли он новым или существующим. Я понимаю, что для новых объектов, я добавляю детей, как это:LINQ: Создайте подтаблицу для объекта, если он еще не существует

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

И с тех пор я могу получить доступ к нему, как это:

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

Но у меня есть базовый класс, который я хочу работать с различными типами 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, прежде чем пытаться присвоить ему значения.

EDIT: Я на самом деле пытается сделать то же самое, как этот парень: Adding a child entity to parent entityset

ответ

0

Я в конечном итоге решить, как это.

public void CreateChildIfNull(LambdaExpression Child) 
    { 
     Type ChildType = Child.Body.Type; 
     var NewChild = Activator.CreateInstance(ChildType); 
     Entity.GetType().GetProperty(ChildType.Name).SetValue(Entity, NewChild, null); 
    } 
Смежные вопросы