2011-05-24 10 views
5

मेरे पास एक ऑटो-वृद्धिशील आईडी फ़ील्ड वाला डेटाबेस तालिका है। यह तालिका एक इकाई डेटा मॉडल के माध्यम से कोड द्वारा उजागर की जाती है। मैं इस तालिका में एक नया रिकॉर्ड लिखने की कोशिश कर रहा हूं। मेरे पास एक तरीका है जिसे इन अभिलेखों को बनाने के लिए ज़िम्मेदार होना चाहिए। यह विधि रिकॉर्ड के संपत्ति मूल्यों में लेती है। इसे एक रिकॉर्ड बनाने की जरूरत है, और एक और तालिका में एक संदर्भ रिकॉर्ड लिखने की जरूरत है। वर्तमान में, मैं यह कोशिश कर रहा हूं कि मैंLINQ से SQL - नया रिकॉर्ड डालें

public int CreateRecord(string name, string description, List<int> ids) 
{ 
    using (DatabaseContext database = new DatabaseContext()) 
    { 
    Record record = new Record(); 
    record.Name = name; 
    record.Description = description; 

    database.Records.InsertOnSubmit(record); 
    database.SubmitChanges(); 

    List<RecordTrack> tracks = new List<RecordTrack>(); 
    foreach (int id in ids) 
    { 
     RecordTrack track = new RecordTrack(); 
     track.RecordID = record.ID; 
     track.ID = id; 
     tracks.Add(track); 
    } 
    database.Tracks.InsertAllOnSubmit(tracks); 
    database.SubmitChanges(); 
    } 
} 

मुझे इस तरीके से सहेजने के लिए रिकॉर्ड नहीं मिल रहा है। जब मैं एक रिकार्ड पास करता था तो मैं इसे करने में सक्षम था। लेकिन अन्य कारकों के कारण, मुझे स्क्रैच से रिकॉर्ड को पूरी तरह से बनाने का एक तरीका चाहिए। मैं क्या गलत कर रहा हूं?

धन्यवाद!

+0

एल 2 एस में जितना फ्लिपेंट होना चाहिए उतना ही नहीं होना चाहिए (इस प्रकार एक टिप्पणी, जवाब नहीं) लेकिन क्या आपको डालने के बाद डीबी संदर्भ से अपना रिकॉर्ड पुनर्प्राप्त करने की आवश्यकता नहीं है? आपके संदर्भ ने अभी तक इसकी आईडी अपडेट नहीं की होगी, नहीं? – AllenG

+0

क्या आपकी ट्रैक टेबल भी स्वतः बढ़ रही है? उस स्थिति में आप आईडी को सेट नहीं कर सकते जैसे आप – Pleun

उत्तर

1

आपके डेटाबेस संदर्भ में AddToRecord() फ़ंक्शन होना चाहिए। अपने record चर जोड़ने के लिए उस फ़ंक्शन का उपयोग करें और फिर अपने डेटाबेस संदर्भ से SaveChanges() पर कॉल करें।

+1

मेरे पास AddToRecord फ़ंक्शन नहीं है। क्या यह एक नामस्थान से जुड़ा एक विस्तार विधि है जिसका मैं संदर्भ नहीं दे रहा हूं? मैंने इसे गुगल किया और इसे कहीं भी नहीं देखा। – Villager

+0

यह एक ऐसा कार्य होना चाहिए जो आपके संदर्भ द्वारा स्वत: उत्पन्न हो। मुझे लगता है कि चूंकि आपके पास 'सेव चेंज' के बजाय 'सबमिट चेंज' है, इसलिए आप कुछ ऐसा उपयोग कर रहे हैं जिसे मैं परिचित नहीं हूं। – dtryan

+1

डीबी.TableName कोशिश करें। जोड़ें (रिकॉर्ड); फिर डीबी। सेव चेंज(); –