3

受到这个问题的启发,我决定在我的 MVC3/ActiveRecord 应用程序中尝试一下。

我有一堆模型已经在工作了,还有一些视图可以处理这些模型。这里没什么特别的。我的一个模型叫做AppSession.

基于上述问题,我希望这会起作用:AppSession.FirstOrDefault(a => ...) ?? null.

它没有用。我仍然得到一个InvalidOperationException. FirstOrDefault和也是如此SingleOrDefault。我结束了我的电话try/catch以绕过它。

我在这里做错了什么?

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

void getAnAppSession() {
    AppSession sessions = project.AppSessions.FirstOrDefault(a => a.Ip == ip && a.MacAddress == macAddress && a.Platform == platform && a.Version == version && a.EndTime == null)
}

ip, macAddress,platformversion都是可验证不为空的方法变量。我的架构AppSessions(因此,我的班级的属性)包括:

  • ID(整数,非空)
  • StartDate(日期时间,不为空)
  • 结束日期(日期时间,空)
  • ip(字符串,不为空)
  • MacAddress(字符串,不为空)
  • 平台(字符串,不为空)
  • 版本(字符串,不为空)
4

1 回答 1

1

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

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);
于 2012-06-06T21:06:21.847 回答