2010-05-24 12 views
5

मैं विदेशी कुंजी के साथ एक साधारण डालने की कोशिश कर रहा हूं, लेकिन ऐसा लगता है कि मुझे प्रत्येक रिकॉर्ड डालने के लिए db.SaveChanges() का उपयोग करने की आवश्यकता है। मैं इस कार्यक्रम के अंत में केवल एक db.SaveChanges() का उपयोग कैसे कर सकता हूं?मैं एक सर्वर अनुरोध में विदेशी कुंजी के साथ रिकॉर्ड क्यों नहीं डाल सकता?

System.Data.UpdateException:

public static void Test() 
{ 
    using (var entities = new DBEntities()) 
    { 
     var sale = 
      new SalesFeed 
      { 
       SaleName = "Stuff...", 
      }; 
     entities.AddToSalesFeedSet(sale); 

     var phone = 
      new CustomerPhone 
      { 
       CreationDate = DateTime.UtcNow, 
       sales_feeds = sale 
      }; 
     entities.AddToCustomerPhoneSet(phone); 

     entities.SaveChanges(); 
    } 
} 

ऊपर कोड चलाने के बाद मैं इस अपवाद प्राप्त प्रविष्टियों को अपडेट करते समय एक त्रुटि हुई। विवरण के लिए InnerException देखें। निर्दिष्ट मान वैध स्थिर प्रकार पैरामीटर नाम: मान का उदाहरण नहीं है।

संपादित करें: बदले गए उदाहरण कोड और वापस अपवाद जोड़ा गया।

+0

अधिक जानकारी दिखाएं कि आपको "फ़ाइल" चर कैसे मिलता है? –

+0

@Andrew: फ़ाइलें चर स्रोत जोड़ा गया। –

+0

ऐसा लगता है कि आपके पास चीजें थोड़ी पिछड़ी हैं - आप फ़ाइल के संदर्भ के साथ DirectorySet में एक प्रविष्टि जोड़ते हैं - क्या यह दूसरी तरफ नहीं होना चाहिए ?? एक फ़ाइल निर्देशिका के अंदर स्थित है - इसलिए फ़ाइल को निर्देशिका का संदर्भ देना चाहिए - आपके पास एक निर्देशिका प्रविष्टि होगी और उसमें संदर्भित फ़ाइलों की संख्या ?? –

उत्तर

12

Apperantly UNSIGNED BIGINT इस समस्या का कारण बनता है का उपयोग कर। जब मैंने SIGNED BIGINT पर स्विच किया, तो सबकुछ काम करता था जैसा कि यह माना जाता था।

+1

मुझे एक MySQL बैकएंड के साथ इकाई का उपयोग करके UNSIGNED INTS के साथ एक ही समस्या थी। आपका डेटाबेस क्या था? – jwrush

+1

मुझे भी MySQL + UNSIGNED बिगिनट के साथ। –

2

मैं इस "सही तरीके" करने की कोशिश की:

alt text http://i45.tinypic.com/mcw5co.png

और फिर मैं, एक निर्देशिका स्कैन करने के लिए दो तालिकाओं में निर्देशिका और अपने सभी फ़ाइलों को स्टोर इस छोटे से परीक्षण ऐप को लिखा था:

static void Main(string[] args) 
{ 
    string directoryName = args[0]; 

    if(!Directory.Exists(directoryName)) 
    { 
     Console.WriteLine("ERROR: Directory '{0}' does not exist!", directoryName); 
     return; 
    } 

    using (testEntities entities = new testEntities()) 
    { 
     StoredDir dir = new StoredDir{ DirName = directoryName }; 
     entities.AddToStoredDirSet(dir); 

     foreach (string filename in Directory.GetFiles(directoryName)) 
     { 
     StoredFile stFile = new StoredFile { FileName = Path.GetFileName(filename), Directory = dir }; 
     entities.AddToStoredFileSet(stFile); 
     } 

     try 
     { 
     entities.SaveChanges(); 
     } 
     catch(Exception exc) 
     { 
     string message = exc.GetType().FullName + ": " + exc.Message; 
     } 
    } 
} 

जैसा कि आप देख सकते हैं, मेरे पास केवल एक ही कॉल है .SaveChanges() बहुत अंत में - यह एक आकर्षण की तरह काम करता है, सबकुछ अपेक्षित है। अपने दृष्टिकोण के बारे में

कुछ एफई प्रणाली पंगा लेना जाना चाहिए .....

+0

ठीक है, मैं इसे देख लूंगा और परिणामों के साथ वापस आऊंगा। धन्यवाद। –

+0

मैंने कोशिश की है, लेकिन एक बार फिर एक अपवाद फेंक दिया गया (अद्यतन प्रश्न देखें)। –

संबंधित मुद्दे