我正在用linq查询填充对象模型。该模型是这样的:更新后会话对象为空
MyModel{
DateTime AppointDate {get; set;}
int TotalAppoints {get; set;}
int AppointDuration {get; set;}
}
的LINQ到SQL查询看起来像这样:
public static GetAppointsFromDB(params){
var MyQuery = from....where...
select new MyModel{
AppointDate = ...,
TotalAppoints = ...,
AppointDuration =...};
return MyQuery as MyModel;}
在母版页,我期待在会话中加载该查询的结果像这样:
if (Session["Appoints"] == null) {Session["Appoints"] = GetAppointsFromDB(...);}
当我运行代码时,会话始终为空。我第二次添加此行,恰好在后面,查询再次运行。当我在代码中的其他位置使用会话时,它也是空的。该查询的工作原理是因为当我在return语句中放置一个断点时,我看到正确填充了该对象。
请让我知道问题来自哪里,我被困在这个看似简单的问题上,我没有看到我做错了什么。
感谢您的建议。
啊哈!有用。使用FirstOrDefault和SingleOrDefault有什么区别? – frenchie 2011-03-27 17:13:24
如果您的查询返回多个项目,SingleOrDefault()会抛出异常 - FirstOrDefault()将只取第一个(如果您的查询没有返回任何项目,默认行为是相同的) – BrokenGlass 2011-03-27 17:15:01
ok,我们将使用FirstOrDefault ,看起来更安全。 – frenchie 2011-03-27 20:22:05