समान स्कीमा के दो डेटाबेस दिए गए, क्या दोनों के बीच रिकॉर्ड स्थानांतरित करने का कोई आसान तरीका है? मैं LINQ से SQL का उपयोग कर रहा हूं क्योंकि मुझे रास्ते में कुछ अतिरिक्त संचालन करने की आवश्यकता है और मेरे द्वारा स्थानांतरित किए जा रहे रिकॉर्ड का प्रतिनिधित्व करने वाली वस्तुओं को यह बहुत आसान बनाता है। यह एक छोटे पैमाने पर सहायक ऐप है, इसलिए एसएसआईएस शायद अधिक है और SQLBulkCopy मुझे मार्गों में आसानी से पूछताछ करने की अनुमति नहीं देता है।डेटाबेस के बीच प्रतिलिपि बनाने के लिए LINQ से SQL का उपयोग
इस मुझे क्या करना चाहते हैं:
public static void TransferCustomer
(DBDataContext DCSource,
DBDataContext DCDest,
int CustomerID)
{
Customer customer;
using (DCSource = new DBDataContext(SourceConnStr))
{
customer = DCSource.Customers
.Where(c => c.CustomerID == CustomerID)
.Single();
}
using (DCDest = new DBDataContext(DestConnStr))
{
DCDest.Customers.InsertOnSubmit(customer);
DCDest.SubmitChanges();
}
}
लेकिन स्पष्ट कारणों के लिए, उस संदेश के साथ एक अपवाद फेंकता है:
का प्रयास संलग्न या एक जोड़े के लिए किया गया है ऐसी इकाई जो नई नहीं है, शायद किसी अन्य डेटा कॉन्टेक्स्ट से लोड हो रही है। यह समर्थित नहीं है।
मैं इस तरह वस्तु का एक उथले नकल करके इस दौर प्राप्त कर सकते हैं:
public static Customer Clone(this Customer customer)
{
return new Customer()
{
Name = customer.Name,
Email = customer.Email
etc...
};
}
और फिर क्लोन आइटम डालने। यदि मैं केवल फ़ील्ड को प्रश्न में कॉपी करता हूं, और तालिका संबंधों का प्रतिनिधित्व करने वाले कोई भी संदर्भ यह ठीक काम करता है। हालांकि यह थोड़ा लंबा हवादार है और जिस तरह से मैं कर रहा हूं, मुझे क्लोन विधि में मैन्युअल रूप से प्रत्येक फ़ील्ड को असाइन करने की आवश्यकता है। क्या कोई इसे आसान बनाने के किसी भी तरीके का सुझाव दे सकता है? दो बातें मुझे पता करना चाहते हैं कर रहे हैं:
- एसक्यूएल को LINQ कर सकते हैं एक आसान तरीका में ऐसा करते हैं,
- वहाँ प्रतिबिंब का उपयोग कर एक उथले प्रति डाल देगा बनाने के लिए का एक अच्छा तरीका है?
बहुत धन्यवाद!
यह असली है की कोशिश करो, लेकिन यह मुझे इस्तेमाल करने के लिए केवल एक हल्के सहायक अनुप्रयोग है। मैं प्रत्येक बैच में कई तालिकाओं में 50 से अधिक पंक्तियों को स्थानांतरित करने की उम्मीद नहीं करता, इसलिए मुझे लगता है कि एसएसआईएस शायद अधिक है। प्रति ऑब्जेक्ट क्लोन विधि का उपयोग करके मेरा वर्तमान समाधान वास्तव में अच्छी तरह से काम करता है, लेकिन यह सुरुचिपूर्ण लगता है। मुझे कुछ और टेबल जोड़ने की ज़रूरत है, इसलिए मैं क्लोन विधियों को लिखने से पहले एक बेहतर तरीका खोजना चाहता था! –