使用LINQ在Azure中字符串长度失败

时间:2014-01-01 13:44:02

标签: c# linq entity-framework azure

我遇到SQL Azure问题,如果数据库是SQL Server 2012,以下带有EF代码的LINQ可以正常工作

var userLength = users.Select(n => new { n.FirstName.Length });

但是,如果我将它指向Azure数据库并且我得到了

  

“base = {”转换为值类型'Int32'失败,因为具体化值为null。结果类型的泛型参数或查询必须使用可空类型。“}”

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

数据库是否包含相同的数据?

也许其中一个用户在Azure数据库中没有设置FirstName?

我想当你在usersLength上迭代你收到此异常时?它是在第一次迭代时抛出还是稍后抛出?

这就是我认为正在发生的事情(我在这里使用LINQ to Objects)

enter image description here

您可以像这样编辑它,使其为null元素(FirstNames)返回0:

enter image description here

如果您有LinqPad,可以下载这两个代码段(它们将在LinqPad中自动打开):

http://share.linqpad.net/2pfjqf.linq

http://share.linqpad.net/vp96kf.linq