[英]session object is null after update
我正在用linq查詢填充對象模型。 該模型如下所示:
MyModel{
DateTime AppointDate {get; set;}
int TotalAppoints {get; set;}
int AppointDuration {get; set;}
}
linq-to-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(...);}
當我運行代碼時,會話始終為null。 我第二次添加此行,就在此之后,查詢再次運行。 當我希望在代碼的其他位置使用會話時,那里也為null。 該查詢之所以有效,是因為當我在return語句上放置一個斷點時,我看到對象已正確填充。
請讓我知道問題出在哪里,我被困在這個看似簡單的問題上,而且我沒有發現我做錯了什么。
感謝您的建議。
public static GetAppointsFromDB(params)
{
var MyQuery = from....where...
select new MyModel{
AppointDate = ...,
TotalAppoints = ...,
AppointDuration =...};
return MyQuery as MyModel;
}
假設此方法實際上返回MyModel
,因此:
public static MyModel GetAppointsFromDB(params)
現在,您看到的可能是MyQuery
導致無法轉換為MyModel
,這就是為什么它返回null的原因-為什么首先需要As
運算符? 如果您的查詢始終返回一個MyModel
類型的實例, MyModel
您應該
return MyQuery;
如果您的查詢包含一個MyModel 枚舉 (這是它的樣子),而您只想返回一個可以使用的
return myQuery.FirstOrDefault();
代替。
最有可能是在Page.Load事件之后觸發了MasterPage.Load事件。 嘗試使用母版頁的Init事件,該事件將在Load事件之前運行。
您的MyQuery
變量的類型為IQueryable<MyQuery>
,而不是您嘗試投射的MyModel
類型。 因此,此行return MyQuery as MyModel
返回null
。
嘗試將其更改為例如
var MyQuery = from....where...
select new MyModel{
AppointDate = ...,
TotalAppoints = ...,
AppointDuration =...};
return MyQuery.ToList();
它應該工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.