मैं linq
और इकाई ढांचे के लिए बेहद नया हूं। मैं एक समस्या को हल करने की कोशिश कर रहा हूं कि नीचे क्यों काम नहीं कर रहा है। उत्पादित त्रुटि "अज्ञात प्रकार 'प्रकार का निरंतर मान बनाने में असमर्थ है। इस संदर्भ में केवल प्राचीन प्रकार या गणना प्रकार समर्थित हैं।"'अज्ञात प्रकार' प्रकार का निरंतर मान बनाने में असमर्थ। इस संदर्भ में केवल प्राचीन प्रकार या गणना प्रकार समर्थित हैं
मैं इस इतने सारे अलग अलग तरीकों से अभी तक अभी भी आदिम प्रकार से संबंधित कोई त्रुटि मिलती है की कोशिश की है। अगर कोई नीचे दिए गए कोड को देख सकता है और उम्मीद है कि यह कहां गलत हो रहा है, तो मैं इसकी बहुत सराहना करता हूं।
public Entities.BikeData[] GetBikesWithExpiredSyncDeadline(int noOfDays) {
using (OfficeEntities cxt = GetContext())
using (ReportingEntities RepCxt = GetReportingContext()) {
Data.Repository.Abstract.IBikeRepository BikeRepos = new Data.Repository.Concrete.BikeRepository();
var details = (from sd in cxt.BikeDetails
where sd.autoreminder == true
&& (sd.lastremindersent == null || sd.lastremindersent < EntityFunctions.AddDays(DateTime.UtcNow, noOfDays * -1))
&& (sd.emailaddress != null && sd.emailaddress.Trim() != "")
select new {
Serial = sd.Serial,
EmailAddress = sd.emailaddress
}).ToList();
var resLst = (from r in RepCxt.RegisteredBikes
join d in details on r.Serial equals d.Serial
join cs in cxt.CompanySettings.ToList() on r.CompanyID equals cs.CompanyID
where (!r.lastupdate.HasValue || r.lastupdate < EntityFunctions.AddDays(DateTime.UtcNow, cs.AutoNotificationFrequency * -1))
select new Entities.BikeData {
ID = r.ID,
Name = r.Ship,
Serial = r.Serial,
LastUpdate = r.lastupdate,
DaysSinceLastSync = (r.lastupdate.HasValue? EntityFunctions.DiffDays(r.lastupdate.Value, DateTime.UtcNow).Value : -1),
EmailAddress = (d.EmailAddress == null ? string.Empty : (String.IsNullOrEmpty(d.EmailAddress) ? r.ShipEmailAddress : d.EmailAddress))
});
return resLst.ToArray();
}
}
अद्यतन
मैं एक दृश्य बना कर अब इस के साथ एक अलग दृष्टिकोण लिया है तो मैं अब और नहीं पार संदर्भ एफई में मिलती है क्या करने की जरूरत। मैं उम्मीद कर रहा था कि आप नीचे से मदद करने में सक्षम हो सकते हैं।
जब मैं objectQuery.ToTraceString() चलाता हूं तो यह मुझे वैध एसक्यूएल प्रदान करता है जो डीबी में रिकॉर्ड देता है, हालांकि एंटीटीफ्रेमवर्क में reslst हमेशा 0 के साथ आता है। क्या यह स्पष्ट हो रहा है कि यह क्यों हो रहा है?
var resLst = (from ls in cxt.BikeLastUpdates
where (!ls.lastupdate.HasValue || ls.lastupdate < EntityFunctions.AddDays(DateTime.UtcNow, ls.AutoNotificationFrequency * -1))
&& (ls.autoreminder ==true)
&& (ls.lastremindersent == null || ls.lastremindersent < EntityFunctions.AddDays(DateTime.UtcNow, 3 * -1))
&& (ls.emailaddress !=null && ls.emailaddress.Trim() != "")
select new Entities.BikeData{
ID = (ls.ID ?? new Guid()),
Name = ls.Bike,
Serial = ls.Serial,
LastUpdate = ls.lastupdate,
EmailAddress = (String.IsNullOrEmpty(ls.emailaddress) ? ls.ShipEmailAddress : ls.emailaddress)
});
var objectQuery = resLst as ObjectQuery;
return resLst.ToArray();
मैं [Sql सर्वर प्रोफाइलर] (HTT का उपयोग कर की सिफारिश करेंगे पी: //msdn.microsoft.com/en-us/library/ms181091.aspx) और उस एसक्यूएल को कैप्चर करना जो ईएफ वास्तव में सर्वर को भेज रहा है। –
चीयर्स साथी। मूर्ख कनेक्शन स्ट्रिंग मुद्दा। आप रहते हैं और सीखते हैं :-) – JIbber4568