LINQ के साथ एक बार में कई रिकॉर्ड निकालने का सबसे अच्छा तरीका क्या है?LINQ क्वेरी में एकाधिक रिकॉर्ड हटाने का सबसे अच्छा तरीका?
उत्तर
अच्छे पुराने sprocs .....
आप अपने dbml फाइल करने के लिए sproc खींच सकते हैं और यह आपके databasecontext कक्षा में एक अमीर विधि उत्पन्न होगा।
Linq2Sql
CustomerDataContext ctx = new CustomerDataContext("connection string"); var customers = ctx.Customers.Where(c => c.Name == "david"); ctx.Customers.DeleteAllOnSubmit(customers); ctx.SubmitChanges();
यह सबसे आसान तरीकों में से एक है लेकिन मैं नहीं कहूंगा कि सबसे कुशल है। वास्तव में कोई अनुकूलन नहीं किया जा रहा है। जेनरेट एसक्यूएल आपकी क्वेरी से मेल खाने वाली सभी ऑब्जेक्ट्स को बताता है, फिर उन्हें हटाने के लिए मैन्युअल रूप से पुन: सक्रिय करता है। इस पोस्ट को देखें - http://stackoverflow.com/questions/869209/bulk-deleting-via-linq – David
यदि आप LINQ से SQL का उपयोग नहीं कर रहे हैं तो http://stackoverflow.com/q/1781175/24267 – mhenry1384
देखें निश्चित रूप से प्रकार 'System.Linq.IQueryable
पीछा कर रहा है करने के लिए LINQ के लिए और अधिक संस्थाओं के साथ रिकॉर्ड को हटाने के लिए है, लेकिन यह मदद मिल सकती है:
शायद अपने से थोड़ा इस उत्तर लेकिन आज के लिए देर से मैं अपने आप को मांग मैं इस में पड़ गए और मैं इस समाधान
CustomerDataContext ctx = new CustomerDataContext("connection string");
ctx.Customers.DeleteAllOnSubmit(ctx.Customers.Where(c => c.Name == "david"));
ctx.SubmitChanges();
जैसा ही होगा, निश्चित रूप से आप उस समाधान के साथ 'आने' का दावा नहीं कर सकते जब आपने जो कुछ किया था, वह 'DeleteAllOnSubmit' विधि के सबसे लोकप्रिय उत्तर से' cust' की घोषणा को स्थानांतरित कर दिया गया था। – Sheridan
मैं खुर्रम के साथ सहमत के साथ आया था, यह एक साधारण संग्रहीत प्रक्रिया के साथ यह करने के लिए और अधिक कुशल है LINQ के साथ (बशर्ते आपके पास ऐसा करने के लिए एसक्यूएल में पर्याप्त अनुमतियां हों)। मैं इसे एक उदाहरण के साथ बढ़ा दूंगा।
संग्रहीत प्रक्रिया: तरीकों पर डेटाबेस अन्वेषक से
CREATE PROCEDURE [dbo].[RemovePermissionsFromRole]
(
@ROLE_ID int
)
AS
BEGIN
SET NOCOUNT ON;
DELETE FROM [RolePermissions] WHERE [RoleID] = @ROLE_ID;
END
खींचें संग्रहीत प्रक्रिया अपने dbml फ़ाइल में फलक। फ़ाइल सहेजें। और कोड में:
if (Request.QueryString["RoleID"] != null) {
int roleID = Convert.ToInt32(Request.QueryString["RoleID"]);
SETSDataContext context = new SETSDataContext();
context.RemovePermissionsFromRole(roleID);
}
एकल आधार पर इकाई की रूपरेखा 6
// Database context
EntitiesContext db = new EntitiesContext(connString);
// Select all the records to be deleted
IEnumerable<entity> list = db.entity.where(x=>x.id == id).toList();
// Use Remove Range function to delete all records at once
db.entity.RemoveRange(list);
// Save changes
db.SaveChanges();
कई रिकॉर्ड निकाला जा रहा है का उपयोग करते हुए जहां खंड
context.EntityModel
.RemoveAll(r => r.property == "propertyEntered");
लेकिन क्या आप भी डेटाबेस है कि नहीं है से रिकॉर्ड निकालें सकता है List<ListOfBadRecords>
context.EntityModel
.Where(w => w.propertyID == ID).ToList()
.RemoveAll(r => !ListOfBadRecords.Any(a => a.anyID == r.propertyID));
में मौजूद है
संपादित करें:
अनिश्चित जो तेज है, लेकिन आप यह भी
.RemoveAll(r => !ListOfBadRecords.Select(s=>s.propertyID).Contains(w.propertyID))
EDIT2 साथ 2 क्वेरी कर सकता है: context.SaveChanges();
मत भूलना के रूप में मैं पहले मसौदे में किया था
यहाँ क्या मैंने समस्या हल की है:
try
{
List<MaterialPartSerialNumber> list = db.MaterialPartSerialNumbers.Where(s => s.PartId == PartId && s.InventoryLocationId == NewInventoryLocationId && s.LocationId == LocationId).ToList();
db.MaterialPartSerialNumbers.RemoveRange(list);
db.SaveChanges();
}
catch(Exception ex)
{
string error = ex.Message;
}
सबसे पहले, आप एक सूची पा सकते हैं उन वस्तुओं को जिन्हें आप हटाना चाहते हैं।
फिर, आप RemoveRange(**list_of_item_to_delete**)
फ़ंक्शन का उपयोग कर सकते हैं ताकि यह डेटाबेस में मौजूद सूची में प्रत्येक उदाहरण को हटा दे।
एमएसडीएन के अनुसार, विधि सूची से तत्वों की एक श्रृंखला को हटा देती है।
अधिक जानकारी के लिए इसे यहाँ पहली तालिका जहां हटा दिया जाना चाहिए रहे हैं रिकॉर्ड है, तो बस RemoveRange उपयोग करते हैं, और अंत में बस में परिवर्तन सहेजने के हैं की एक IEnumerable वस्तु बनाने की जाँच https://msdn.microsoft.com/en-us/library/y33yd2b5(v=vs.110).aspx
कृपया यह बताएं कि यह क्यों काम करता है कोड को उत्तर के रूप में पोस्ट न करें –
यह मैं क्या उपयोग किया जाता है, डेटाबेस। आइए मान लें कि आप उत्पाद तालिका पर एक विशिष्ट सप्लायर आईडी से सभी उत्पादों को हटाना चाहते हैं, इस तरह आप इसे कैसे कर सकते हैं।
आईन्यूमेरेबल प्रोडक्ट्स टोरोमव = डीबी.प्रोडक्ट्स। (X => x.SupplierId == प्रदायक); db.Products.RemoveRange (ProductsToRemove); db.SaveChanges();
- 1. LINQ क्वेरी शीर्ष रिकॉर्ड
- 2. हाइबरनेट: संग्रह में तत्वों को हटाने का सबसे अच्छा तरीका
- 3. मर्ज क्वेरी और हटाने रिकॉर्ड
- 4. एक त्वरित एपीआई में एकाधिक क्वेरी पैरामीटर को पारित करने का सबसे अच्छा तरीका क्या है?
- 5. संग्रह से वस्तुओं को हटाने का सबसे अच्छा तरीका
- 6. सीएसएस गोलाकार कोने हेलो को हटाने का सबसे अच्छा तरीका?
- 7. NHibernate का उपयोग कर तालिका में सभी पंक्तियों को हटाने का सबसे अच्छा तरीका?
- 8. हैश तालिका से प्रविष्टि को हटाने का सबसे अच्छा तरीका
- 9. डाटाबेस में एकाधिक ध्वज स्टोर करने का सबसे अच्छा तरीका
- 10. रेल में एकाधिक फ़िल्टर बनाने का सबसे अच्छा तरीका
- 11. डुप्लिकेट तत्वों को हटाने, एकाधिक एसटीएल कंटेनरों को मर्ज करने का सबसे अच्छा तरीका?
- 12. एकाधिक कॉन्फ़िगरेशन फ़ाइल उदाहरणों को संभालने का सबसे अच्छा तरीका?
- 13. एकाधिक टीसीपी ग्राहकों को स्वीकार करने का सबसे अच्छा तरीका?
- 14. एकाधिक सबव्यूज़ व्यवस्थित करने का सबसे अच्छा तरीका क्या है?
- 15. एकाधिक स्क्रॉलिंग कॉलम को संभालने का सबसे अच्छा तरीका
- 16. टी-एसक्यूएल में बड़ी तालिका को हटाने का सबसे अच्छा तरीका क्या है?
- 17. ActiveRecord: संबद्ध रिकॉर्ड को हटाने
- 18. इकाई परीक्षण संग्रह का सबसे अच्छा तरीका?
- 19. जावा में ऐरे में डुप्लिकेट को हटाने का सबसे अच्छा तरीका क्या है?
- 20. सबसे अच्छा तरीका डेटाबेस
- 21. सबसे अच्छा तरीका है
- 22. सबसे अच्छा तरीका है
- 23. सबसे अच्छा तरीका है
- 24. सबसे अच्छा तरीका है
- 25. सबसे अच्छा तरीका है?
- 26. LINQ क्वेरी
- 27. सबसे अच्छा तरीका है
- 28. सबसे अच्छा तरीका/बाकी
- 29. सबसे अच्छा तरीका है
- 30. रुझान डेटा संग्रहीत करने का सबसे अच्छा तरीका क्या है?
यदि आपको कुछ कहां से हटाना है ... 'तो SQL का उपयोग करने पर विचार करें। LINQ इस नौकरी के लिए सबसे अच्छा उपकरण नहीं हो सकता है। – Myster