यह अब कुछ दिनों के लिए मेरे जीवन को बर्बाद कर दिया गया है, पूछने के लिए समय के लिए ...में और नहीं Linq के साथ की इकाइयां (EF4.0)
मैं इकाई की रूपरेखा 4.0 उपयोग कर रहा हूँ मेरे ऐप के लिए।
एक स्थान (जैसे एक घर या कार्यालय) एक या अधिक सुविधाओं (एक बाथरूम, बेडरूम, स्नूकर टेबल आदि की तरह ..)
मैं स्थान पृष्ठ पर एक चेकबॉक्स सूची प्रदर्शित करना चाहते हैं, एक साथ है सुविधाओं की चेकबॉक्स सूची, जिनके पास वर्तमान में मौजूद स्थान की जांच की गई है।
सुविधाओं के लिए मेरे मॉडल देखें इस प्रकार है ...
public class FacilityViewItem
{
public int Id { get; set; }
public string Name { get; set; }
public bool Checked { get; set; }
}
तो जब im यूआई के स्थान देखें मॉडल गुजर, मैं सुविधाएं जहां टी प्रकार FacilityViewItem की है की एक List<T>
पास करना चाहते हैं।
स्थान पहले से मौजूद सुविधाओं को प्राप्त करने के लिए सरल है - मैं स्थान का उपयोग कर एक क्वेरी करता हूं। क्षमताएं जो एंटीटी कोलेक्शन देता है जहां टी प्रकार की सुविधा है। इसका कारण यह है की सुविधाओं में एक नेविगेशन संपत्ति है ....
var facs = from f in location.Facilities
select new FacilityViewItem()
{
Id = f.FacilityId,
Name = f.Name,
Checked = true
};
तो यहाँ जहां मेरी समस्या निहित है - मैं सुविधाओं, लोगों को स्थान नहीं है कि के बाकी चाहता हूँ।
मैंने एक्सेप्ट() और किसी भी() और इसमें शामिल हैं() का उपयोग करने का प्रयास किया है, लेकिन मुझे एक ही त्रुटि मिलती है।
प्रश्नों कि काम नहीं करते के उदाहरण ...
var restOfFacilities = from f in ctx.Facilities
where !hasFacilities.Contains(f)
select new FacilityViewItem()
{
Id = f.FacilityId,
Name = f.Name
};
var restOfFacilities = ctx.Facilities.Except(facilitiesThatLocationHas);
var notFacs = from e in ctx.Facilities
where !hasFacilities.Any(m => m.FacilityId == e.FacilityId)
select new FacilityViewItem()
{
Id = e.FacilityId,
Name = e.Name
};
और त्रुटि मैं हर कार्यान्वयन के साथ मिलता है ...
System.NotSupportedException एक निरंतर मूल्य बनाने में असमर्थ था बिना क्रिया संदेश = 'Chapter2ConsoleApp.Facility' टाइप करें। इस संदर्भ में केवल आदिम प्रकार (जैसे इंट 32, स्ट्रिंग, और ग्विड ') समर्थित हैं।
मैं यहां क्या देख रहा हूं? विडंबना यह है कि पर्याप्त
var restOfFacilities = from f in ctx.Facilities
where !facs.Select(fac => fac.Id).Contains(f.Id)
select f;
वास्तव में 3 प्रश्नों मैं पहले से ही करने की कोशिश की के रूप में ही त्रुटि देता है। – Baldy
... हालांकि उस क्वेरी के मेरे मूल उद्धरण में कोई त्रुटि हुई थी! – Baldy