首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LINQ的*OrDefault在MVC3 + ActiveRecord中抛出异常

LINQ的*OrDefault在MVC3 + ActiveRecord中抛出异常
EN

Stack Overflow用户
提问于 2012-06-06 20:25:40
回答 1查看 182关注 0票数 3

this question的推动下,我决定在我的MVC3 3/ActiveRecord应用程序中尝试这一点。

我有一堆模型已经起作用了,还有一些关于这些模型的观点。这里没什么特别的。我的一个模型叫做AppSession

基于上述问题,我希望这个问题能够奏效:AppSession.FirstOrDefault(a => ...) ?? null

它没有起作用。我还能拿到InvalidOperationExceptionFirstOrDefaultSingleOrDefault也是如此。最后,我把我的电话包装在try/catch上,以避开它。

我在这里做错什么了?

编辑:根据请求,实际代码是:

代码语言:javascript
复制
void getAnAppSession() {
    AppSession sessions = project.AppSessions.FirstOrDefault(a => a.Ip == ip && a.MacAddress == macAddress && a.Platform == platform && a.Version == version && a.EndTime == null)
}

ipmacAddressplatformversion都是可验证的非空方法变量。我的AppSessions模式(以及相应地,类上的属性)包括:

(int,非null)

  • StartDate (DateTime,非null)

  • EndDate (DateTime,null)

  • Ip )(字符串,非null)

  • MacAddress (字符串,非null)

  • Platform )(字符串,非null)

  • Version (字符串,非空)

)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-06 21:06:21

也许您的project.AppSessions本身是空的?这将导致FirstOrDefault()方法引发错误。在调用FirstOrDefault之前,您可能需要检查它是否为null,如果该对象为null,则创建一个新的AppSession对象:

代码语言:javascript
复制
AppSession sessions = (project.AppSessions as AppSession ?? new AppSession())
    .FirstOrDefault(a => a.Ip == ip && 
                    a.MacAddress == macAddress && 
                    a.Platform == platform && 
                    a.Version == version && 
                    a.EndTime == null);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10921701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档