我试图编写针对其执行包括为空的导航性能的投影一个WCF数据服务的查询(即,在底层的数据模型的FK列可以为空,所以关联是0..1)。 该项目的语言是VB.NET,而不是我的选择。 查询的示例性部分:
From t In DataServiceReference.Context.Transactions
Where t.ID = transactionID
Select
CSM = t.WrittenByEmployee.Name, _
t.CustomerFirstName
当对一排,其中WrittenByEmployee为null执行此查询,我得到下面的错误,正如人们所预料:
由导航属性“WrittenByEmployee”返回项为无效,不能初始化。 访问此属性之前,您应该检查空值。
根据这个博客 ?运营商:有条件的空检查通过使用三元是在C#可能。 然而,遗憾的是该项目是在VB.NET,而不是C#。 我知道,在VB中与之相当的是如果()运算符,但它并没有出现期望的工作。 如果我改变了上面的查询到这一点:
Select
CSM = If(t.WrittenByEmployee IsNot Nothing, t.WrittenByEmployee.Name, String.Empty)
我在运行时出现此错误:
构建或表达初始化类型(...)的情况下(t.WrittenBy员工!= NULL)不支持
我试图颠倒测试,但有一个类似的错误,只有(t.WrittenByEmployee == NULL)来代替。
我如何可以撰写此查询以检查空值WrittenByEmployee导航属性的方式,数据服务会接受吗?