2012-04-26 8 views
5

मैं निम्नलिखित कोडLINQ संस्थाओं के लिए समर्थित नहीं SqlFunctions.DateDiff

DateTime now = DateTime.UtcNow; 

var allItemsOver64 = _inventoryContext.Items.Where(i => 
    (SqlFunctions.DateDiff("dd", i.PrimaryInsured.DoB, now)/365.0) >= 65); 

IQueryable<Item> items65To69 = allItemsOver64.Where(i => 
    (SqlFunctions.DateDiff("dd", i.PrimaryInsured.DoB, now)/365.0) >= 65 && 
    (SqlFunctions.DateDiff("dd", i.PrimaryInsured.DoB, now)/365.0) <= 69); 

लेकिन जब मैं कोशिश करते हैं और इस प्रकार allItemsOver64 Items65To69.Count() का उपयोग मैं यह त्रुटि

अभिव्यक्ति (मिल (((कन्वर्ट (DateDiff ("dd", [10007] .PrimaryInsured.DoB, 26/04/2012 15:03:09))/365)> = 65) और ((कन्वर्ट (DateDiff ("dd" [10007] .PrimaryInsured.DoB, 26/04/2012 15:03:09))/365)> = 65)) और ((कन्वर्ट (DateDiff ("dd", [10007] .PrimaryInsured.DoB, 26/04/2012 15:03:09))/365) < = 69)) समर्थित नहीं है।

क्या मैं गलत कर रहा हूँ?

+0

एरियन संपादित करने के लिए धन्यवाद। –

+0

आप कौन सी आरडीबीएमएस प्रणाली का उपयोग कर रहे हैं? –

उत्तर

6

शायद तुम SqlFunctions बजाय EntityFunctions उपयोग करने का प्रयास कर सकता है। एंटिटी को LINQ साथ

+0

अब मैं अभिव्यक्ति (((DiffYears ([10007] .PrimaryInsured.DoB, 26/04/2012 15:25:49)> = 65) और (DiffYears ([10007] .PrimaryInsured.DoB, 26/04/मिल 2012 15:25:49)> = 65)) और (डिफयर्स ([10007]। पैरामिशन इंश्योरेंस। डीओबी, 26/04/2012 15:25:49) <= 69)) समर्थित नहीं है। –

+0

आजकल डीबीफंक्शन; EntityFunctions अप्रचलित –

+0

@ थॉमस हैगस्ट्रॉम - आप क्यों कहेंगे कि यह अप्रचलित है? यदि आप प्रलेखन की जांच करते हैं, तो आप देख सकते हैं कि यह अभी भी ढांचे में शामिल है और निश्चित रूप से वहां अभी भी समर्थित ऑपरेशन हैं जो कहीं और समर्थित नहीं हैं। –

2

DateDiff समारोह पीछा कर रहा है bellow

आप के लिए

Day difference 
EntityFunctions.DiffDays(startDate , endDate); 

Hours diff -> 
EntityFunctions.DiffHours(startDate , endDate); 

Minuutes diff -> 
EntityFunctions.DiffMinutes(startDate , endDate); 
2

मैं 4.1 एफई से संबंधित मूल प्रश्न को समझने लेकिन सिर्फ नोट करने के लिए EntityFunctions अब EF6 में अप्रचलित है (https://msdn.microsoft.com/en-us/library/system.data.entity.core.objects.entityfunctions%28v=vs.113%29.aspx) चाहते हैं , इसलिए EF6 (https://msdn.microsoft.com/en-us/library/system.data.entity.dbfunctions%28v=vs.113%29.aspx) को लक्षित करने के बजाय डीबीफ़ंक्शन का उपयोग किया जाना चाहिए।