我正在尝试创建一种方法,可以更新实体的子表,无论它是新的还是现有的。我的理解是,对于新实体,我添加这样的孩子:
ChildEntityENT child = new ChildEntityENT();
Entity.ChildEntityENT = child;
从那时起,我可以像这样访问它:
Entity.ChildEntityENT.Value1 = MyValue;
Entity.ChildEntityENT.Value2 = MyValue;
但我有一个基类,我想使用各种Entity和ChildEntityENT类型。我最初的想法是沿着这些方向做一些事情,但我似乎无法使其发挥作用。基本上我打算让开发人员使用lambda表达式从基本实体指向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 :(得分: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);
}