2013-03-21 24 views
1

我有一個實體框架語句,用於檢查用戶是否已經在隊列中。看似簡單,但由於某種原因,我得到一個異常:「鑄塑價值型‘布爾’失敗,因爲物化值爲null無論是結果型的泛型參數或查詢必須使用可空類型」爲什麼會linq .Any()拋出「鑄造值類型'布爾'失敗,因爲物化」?

任何人都知道爲什麼?

var campaignIds = campaigns.Select(c => c.Id); 
return _queuedRecipientRepository.GetTable().Any(q => campaignIds.Contains(q.CampaignId) && q.Recipient.Id == recipient.Id); 
+2

請發送已發送到服務器(SQL事件探查器)的SQL。由於某種原因,服務器發送NULL。 – usr 2013-03-21 17:43:03

+0

放置斷點並檢查campaignIds是否爲空(列表中的項目或變量本身) – AaronLS 2013-03-21 17:46:16

+0

嘗試在Select的末尾添加ToList()。 – 2013-03-21 17:54:56

回答

1

我想你應該包括收件人作爲數據庫結果的一部分。 在使用中添加System.Data.Entity

var campaigns = from q in context.Campaigns.Include(x => x.Recipient) 
       where campaignIds.Contains(q.CampaignId) && q.Recipient.Id == recipient.Id 
       select q.Id 
相關問題