मैं linq से sql के लिए बहुत नया हूं और मुझे यकीन नहीं है कि वास्तव में रिकॉर्ड को कैसे हटाया जाए।linq में sql में कैसे हटाएं?
तो मैं इस ट्यूटोरियल को देख कर दिया गया
http://weblogs.asp.net/scottgu/archive/2007/05/19/using-linq-to-sql-part-1.aspx
अद्यतन के लिएतो वे
NorthwindDataContext db = new NorthwindDataContext();
Product product = db.Products.Single(p => p.ProductName == "Toy 1");
product.UnitPrice == 99;
product.UnitsInStock = 5;
db.SubmitChanges();
है के लिए हटाने पर उन्हें
NorthwindDataContext db = new NorthwindDataContext();
var toyProducts = from p in db.Producsts
where p.ProductName.Contains("Toy")
select p;
db.Products.RemoveAll(toyProducts);
db.SubmitChanges();
है तो मैं हर क्वेरी करने के लिए है उस रिकॉर्ड को हटाने के लिए रिकॉर्ड प्राप्त करने के लिए समय? जैसे मैं अद्यतन के साथ ऐसा करने के तरीके को देख सकता हूं क्योंकि आपको इसे एक रिकॉर्ड देने की आवश्यकता है जो पहले अपडेट करना है और फिर परिवर्तन करना है, इसलिए मैं क्वेरीिंग भाग को समझता हूं लेकिन हटाए जाने के साथ नहीं।
जैसा कि आप बस उसमें भेज नहीं सकते हैं जिसे आप हटाना चाहते हैं और यह जाता है और इसे हटा देता है? आपको इसे पहले क्यों प्राप्त करना होगा और फिर इसे हटाने के लिए कहें?
क्या यह डेटाबेस पर 2 हिट नहीं है?
इसके अलावा मेरे पास विदेशी कुंजी संबंध है जो मैं काम करने की कोशिश कर रहा हूं। तो मैं इस
public ViewResult(string param1, string param2)
{
Table A = new Table A
A.Field1 = param1;
A.Field2 = param2;
Delete(A);
}
private void Delete(Table A)
{
DbContext.A.DeleteAllOnsubmit(A.TableB);
DbContext.A.DeleteAllOnSubmit(A.TableC);
DbContext.A.DeleteOnSubmit(A);
}
तो यह विफल रहता है यह इस संदेश के साथ आता है "एक इकाई है कि संलग्न नहीं किया गया निकाला नहीं जा सकता।"
तो मैं देख सकता हूं कि पहली 2 लाइनें डिलीट विधि में क्यों विफल हो जाएंगी, क्योंकि मैंने एक नई वस्तु बनाई है और उनके ऑब्जेक्ट में कुछ भी नहीं है जिसमें टेबलबी और टेबलसी के बारे में कोई जानकारी है।
हालांकि मैं नहीं देख सकता कि आखिरी पंक्ति अभी भी विफल क्यों होती है, भले ही 2 अन्य लाइनें न हों।
जैसा कि मैंने सोचा कि यह कैसे काम करेगा यह मेरी टेबल ए क्लास ऑब्जेक्ट लेगा जो मैंने पास किया था और उसमें मौजूद जानकारी के लिए तालिका को देखकर। हालांकि यह मामला प्रतीत नहीं होता है।
तो क्या मुझे पहले जानकारी लेनी है और फिर इसे प्राप्त करने के लिए एक क्वेरी करें और फिर इसे हटा दें, उदाहरण के लिए?
इसके अलावा removeAll() और DeleteAllOnSubmit() के बीच क्या अंतर है।
जैसा कि मैंने कहा था कि मैं एसक्यूएल के लिए linq के लिए नया हूं और समय बाधाओं के कारण बैठने और उस पर एक पुस्तक पढ़ने में सक्षम नहीं हूं। एक बार मेरे पास अधिक समय हो जाने पर मैं शायद एक पुस्तक के माध्यम से पढ़ूंगा।
धन्यवाद
मैंने यह कोशिश की है लेकिन ऐसा लगता है कि यह रिकॉर्ड का पता लगाने के लिए ऑब्जेक्ट पर सभी मानों का उपयोग करने का प्रयास करता है। पंक्ति के साथ यह त्रुटियां नहीं मिलीं या बदल दी गई हैं। विचार? – drizzie
@drizzie - क्या आपने केवल अपनी इकाई के उदाहरण में कुंजी डाली? –
हां, मेरा कोड आपके जैसा है। – drizzie