2012-04-07 60 views
0

我有两个通过实体框架4访问的Sql Server表。它们由连接的从属端上的0到1行的单个键连接。这是我的linq查询。如何处理从属表中的缺失行

 var typeDtoList = from type in typeList 
         select (new DxStudioTypeDto(parent, 
                isChildrenLoadOnDemand, 
                businessFacade, 
                server, 
                database, 
                type.typeGuid, 
                type.typeName, 
                type.writerName, 
                type.managerName, 
                type.Reporting_Type.MRef_Status, 
                type.Reporting_Type.Exists_In_Drop)); 

显然,如果Reporting_Type返回零行,的LINQ表达式抛出的DxStudioTypeDto构造函数的最后两个参数一个空引用异常:

type.Reporting_Type.MRef_Status, 
type.Reporting_Type.Exists_In_Drop)); 

有没有一种方法来检测没有一个Reporting_Type行并替换一个默认的字符串? DxStudioTypeDto是一个不可变的类型,因此当我创建一个新对象时,我需要所有可用的参数。对于这种情况的其他策略?

回答

0

你试过这个吗?

((type.Reporting_Type == null) ? "some default value" : type.Reporting_Type.MRef_Status) 

我知道有时EF引擎会返回一个“提供程序不支持此操作”的类似的东西,但它值得一试。

+0

有时最简单的东西是最难看的。感谢您的正确方向。工作得很好。 – JimBoone 2012-04-08 12:04:08