1

假设我在 sql 中有两个表(AddressPhone),它们具有一对一的关系。我已经创建了相应的 linq to sql 类并将关联更改为OneToOne

我想通过过滤子对象来检索这两个对象。例如,我有以下查询可以正常工作:

var n = db.Addresses.Where(t => t.Phone.Number == 100);

有什么办法可以使以下工作:

var n = db.Addresses.Where(t => t.Phone == new Phone(100));

上面的Phone类构造函数初始化Number属性。正如我所看到的,发出的查询包含一个子句,该子句通过 id(主键)过滤 Phones 表,但不包括 number 子句。

如果我Number在 Visual Studio 中设置为主键,则它包含在 where 子句中,但搜索仍然不返回任何内容,因为 id 的参数值为 0。即使它有效,它也不是解决方案,因为它不Number应该是主键.

4

1 回答 1

1

你问的不是很合理。如果您想要给定地址的电话元素,您可以通过访问 Address.Phone 属性来获得它。

您不能初始化一个类型并使用它来投影,因为这是 DLinq,其中查询被转换为 DB。您可以在 Linq to objects 上执行此操作,但它会强制您枚举列表,这会将所有数据库信息提取到内存中,这可能不利于性能...

我看不到这里的问题?您有地址,可以对其进行有效搜索,并且可以通过访问 Address 属性来访问 phone 属性。

于 2010-02-11T12:24:47.960 回答