下面的 LINQ 查询 (personDevices) 没有任何问题。但是,当我将“123”替换为通过外键直接访问值时:
t3.deviceTypeA.mobile_number
...查询返回 0 个结果。最终我想做一个如下的选择语句:
number =
t3.type == "phone" ? t3.deviceTypeA.mobile_number:
t3.type == "computer" ? t3.deviceTypeB.computer_number :
t3.type == "legacy" ? t3.deviceTypeC.legacy_number :
"nodata"
这解释了为什么我需要外键,但我已经简化了问题的查询。
var personDevices = from t1 in db.people
join t2 in db.peopleDevices on t1.person_id equals t2.person_id
join t3 in db.deviceRegistrations on t2.registration_id equals t3.registration_id
select new {
t1.person_id,
t1.name,
t3.type,
t3.generated_code,
t3.hardware_id,
devicetypeA_number = "123"
};
由于各种原因,我在外键上禁用了参照完整性并删除了数据检查。使用 SQL Server 2008 并在 C# .NET 4 下运行查询。
为什么访问外键表中的数据会导致查询没有返回结果,我该如何解决?