2013-03-05 6 views
13

मैं एंटीटी फ्रेमवर्क का उपयोग करके ऑब्जेक्ट को हटाने की कोशिश कर रहा हूं और इंटरनेट पर सभी ट्यूटोरियल्स पर मैंने पाया कि ऐसा करने के लिए आपको संदर्भ पर DeleteObject विधि कॉल करना होगा। मैंने ऐसा करने की कोशिश की लेकिन ऐसा लगता है कि मेरे पास DeleteObject विधियां नहीं हैं।इकाई ढांचे के साथ किसी आइटम को हटाने

यहाँ मेरी कोड है:

public void DeleteBook(int bookId) 
    { 
     Book book = (Book)bookContext.Books.Where(b => b.Id == bookId).First(); 
     bookContext.DeleteObject(book); 
    } 

यह वह जगह है त्रुटि मैं:

'DataAccess.Models.BooksEntities' 'DeleteObject' और कोई विस्तार विधि के लिए एक परिभाषा शामिल नहीं है 'DeleteAbject' प्रकार 'DataAccess.Models.BooksEntities' के पहले तर्क को स्वीकार करते हुए पाया जा सकता है (क्या आप एक निर्देश या निर्देशक संदर्भ का उपयोग कर रहे हैं?)

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

+2

आप '(पुस्तक)' 'Book' काम त्याग,' Book' चर बदल लेते हैं करने के लिए 'var', किस प्रकार जब पर होवर किया है दिखाया गया है? मुझे लगता है कि आप गलत वर्ग का उपयोग कर रहे हैं। – mattytommo

उत्तर

22

क्या आप डीबीकॉन्टेक्स्ट या ऑब्जेक्ट कॉन्टेक्स्ट का उपयोग कर रहे हैं? यदि आप एक DbContext है, तो आप Remove समारोह उपयोग करने की आवश्यकता:

public void DeleteBook(int bookId) 
    { 
     Book book = (Book)bookContext.Books.Where(b => b.Id == bookId).First(); 
     bookContext.Books.Remove(book); 
    } 
+1

आपको परिवर्तनों को सहेजने की आवश्यकता है। – Netferret

3

यह पुन: प्राप्त करने राज्य बदलकर बिना इकाई को हटाने की संभावित समाधान

DbContext तरीकों प्रवेश और प्रवेश कहा जाता है, इन तरीकों मिलता है दी गई इकाई के लिए एक DbEntityEntry और इकाई के बारे में जानकारी तक पहुंच प्रदान करें और इकाई पर कार्रवाई करने में सक्षम एक DbEntityEntry ऑब्जेक्ट को वापस करें। अब हम केवल इकाई स्थिति को EntityState में बदलकर संदर्भ पर हटाए गए ऑपरेशन को निष्पादित कर सकते हैं। हटाया गया।

using (Entities Context = new Entities()) 
{ 
    Book deptBook = new Book { Id = bookId }; 
    Context.Entry(deptBook).State = EntityState.Deleted; 
    Context.SaveChanges(); 
} 
संबंधित मुद्दे