这是类似于我的问题的简化示例。假设您有2个sql表:Car和Owner
Table Car有外键IDOwner。 Lightswitch数据模型具有数据项Car和Owner,以及
dataitem Car有子对象所有者,默认为null。我想通过代码设置Onwer子对象,而不是通过自动生成的AutoCompleteBox或类似的东西。我用这种方式写了代码:
Owner ow = this.DataWorkspace.MyData.Owners.Where(x => x.IDOnwer = SOME_ID).First(); //此时变量ow是regullary加载非null对象 - 我在调试器中看到它
this.CarDataItem.Owner = ow;
//此时ow仍然被加载而不是null对象但是this.CarDataItem.Owner仍为null - //也在调试器中检查
我的问题是通过代码更改此类数据项的子对象的正确方法是什么?
如果我打开屏幕设计器并在屏幕上拖动CarDataItem的Owner属性,我将获得AutoCompleteBox,我可以在其中选择所有者子对象,但我不想要这样。我想这样做
自动通过代码。非常感谢你提前!
答案 0 :(得分:0)
我不明白为什么 CarDataItem 存在。我知道你有一个 Car 实体,&你有一个所有者实体。你有没有定义他们之间的关系?在你的情况下,看到你没有指明那里必须是一个所有者,你的关系将是0..1-Many。
如果您添加了该关系, Car 实体将获得名为所有者的导航属性(除非您更改了名称)。然后,您的代码执行以下操作将是一件简单的事情:
//这比你拥有的那条线要好 所有者ow = this.DataWorkspace.MyData.Owners_SingleOrDefault(SOME_ID);
this.Car.Owner = ow;
答案 1 :(得分:0)
你有模型层并使用数据注释,例如EF代码首先要设置关联吗?
这是一个人为的msdn例子 http://msdn.microsoft.com/en-us/library/ff422034%28v=VS.91%29.aspx