मुझे ऐसी समस्या का सामना करना पड़ रहा है जो शायद काफी आम है लेकिन मुझे इसका कोई समाधान नहीं मिल रहा है। समस्या तब होती है जब किसी उपयोगकर्ता के पास क्लाइंट पर कैश में इकाइयां होती हैं और कोई अन्य उपयोगकर्ता उन इकाइयों में से कुछ को हटा देता है (सर्वर पर)। जब पहला उपयोगकर्ता उसके डेटा को अपडेट करना चाहता है तो हटाए गए इकाइयों को कैश से हटाया नहीं जाता है। जब भी आप अपडेट करते हैं तो आप कैश को साफ़ करके इसे हल कर सकते हैं लेकिन फिर आप सभी गैर-सहेजे गए परिवर्तन भी खो देते हैं। क्या मुझे कुछ याद आ रही है?ब्रीज़: पूरे कैश को साफ़ किए बिना किसी अन्य उपयोगकर्ता द्वारा डेटाबेस से हटाए गए कैश से इकाइयों को निकालें?
उदाहरण:
मॉडल:
public class Order
{
[Key]
public int Id { get; set; }
public ICollection<OrderDetail> OrderDetails { get; set; }
}
public class OrderDetail
{
[Key]
public int Id { get; set; }
[ForeignKey("Order")]
public int Order_Id { get; set; }
public virtual Order Order { get; set; }
}
क्लाइंट कोड:
function getOrder(orderId, orderObservable) {
var query = EntityQuery.from("Orders")
.where("orderId", "==", orderId)
.expand("orderDetails");
return manager.executeQuery(query).then(querySucceeded).fail(queryFailed);
function querySucceeded(data) {
var order = data.results[0];
// NOTE: the removed orderdetail is still there 'order.orderDetails'
orderObservable(order);
}
}
चरण-दर-चरण परिदृश्य:
- साथ एक आदेश के लिए उपयोगकर्ता A प्रश्नों अपने संबंधित आदेश।
- आदेश और ऑर्डर विवरण तब कैश में रखा जाता है।
- उपयोगकर्ता बी एक आदेश हटा देता है और सर्वर में परिवर्तनों को बचाता है।
- उपयोगकर्ता ऑर्डर के लिए नवीनतम अपडेट प्राप्त करने के लिए एक प्रश्न।
- जब क्वेरी हटा दी गई ऑर्डर करें अभी भी वहां है।
हवा-डॉक्स में, शीर्षक के अंतर्गत "कैश समाशोधन के बारे में महत्वपूर्ण चेतावनियां", वहाँ एक समाधान है कि क्वेरी से कैश और परिणाम की तुलना द्वारा कैश्ड संस्थाओं दूर करता है और परिणाम में लापता संस्थाओं detaches है। http://www.breezejs.com/documentation/entitymanager-and-caching लेकिन यह इस मामले में काम नहीं करता है। मुझे लगता है कि इसे इस तथ्य से करना है कि ऑर्डर विवरण से संबंधित है और यह सफलता-कॉलबैक को पारित होने से पहले कैश से "उठाया गया" है।
सभी मदद की सराहना की जाती है!
इसे आज़माएं: http: //blogs.msdn.com/b/diego/archive/2012/04/01/tips-to-avoid-deadlocks-in-entity-framework-applications.aspx। –