0

这是类似于我的问题的简化示例。假设你有 2 个 sql 表:Car 和 Owner

表 Car 具有外键 IDOwner。Lightswitch 数据模型具有数据项 Car 和 Owner,以及

dataitem Car 有子对象 Owner,默认情况下为 null。我想通过代码设置 Onwer 子对象,而不是通过自动生成的 AutoCompleteBox 或类似的东西。我这样写代码:

所有者 ow = this.DataWorkspace.MyData.Owners.Where(x => x.IDOnwer = SOME_ID).First(); //此时变量 ow 是常规加载的非空对象 - 我在调试器中看到它

this.CarDataItem.Owner = ow;

//此时 ow 仍然加载不是 null 对象但是 this.CarDataItem.Owner 仍然是 null - //也在调试器中检查

我的问题是通过代码更改此类数据项的子对象的正确方法是什么?

如果我打开屏幕设计器并在屏幕上拖动 CarDataItem 的 Owner 属性,我将得到 AutoCompleteBox ,我可以在其中选择 Owner 子对象,但我不希望这样。我想做这个

自动通过代码。非常感谢您!

4

2 回答 2

0

我不明白为什么CarDataItem存在。我知道您有一个Car实体,并且您有一个Owner实体。你定义了它们之间的关系吗?在您的情况下,由于您没有指定必须有所有者,因此您的关系将是 0..1-Many。

如果您添加了该关系,则Car实体将获得一个名为Owner的导航属性(除非您更改了名称)。然后,您的代码执行以下操作将是一件简单的事情:

//这比您拥有 Owner ow = this.DataWorkspace.MyData.Owners_SingleOrDefault(SOME_ID); 的行更可取

this.Car.Owner = ow;

于 2012-11-15T06:00:10.633 回答
0

您是否有模型层并首先使用数据注释(例如 EF 代码)来建立关联?

这是一个人为的 msdn 示例 http://msdn.microsoft.com/en-us/library/ff422034%28v=VS.91%29.aspx

于 2012-11-15T21:47:35.540 回答