[C#] एक रेफरेंसियल कॉन्स्ट्रेन में एक आश्रित संपत्ति को स्टोर-जेनरेट किए गए कॉलम में मैप किया जाता है


Answers

यह त्रुटि कहती है कि आप असमर्थित संबंध का उपयोग कर रहे हैं या आपको अपने मैपिंग में त्रुटि है। आपका कोड शायद त्रुटि से बिल्कुल असंबंधित है।

त्रुटि का अर्थ है कि आपके पास उन संस्थाओं के बीच कुछ संबंध हैं जहां निर्भर इकाई में विदेशी कुंजी संपत्ति को उत्पन्न किए गए स्टोर के रूप में परिभाषित किया जाता है। स्टोर जेनरेटेड गुण डेटाबेस में भर जाते हैं। ईएफ स्टोर उत्पन्न गुणों को विदेशी कुंजी के रूप में समर्थन नहीं करता है (साथ ही प्राथमिक कुंजी में गणना गुण)।

Question

डेटाबेस में लिखते समय मुझे यह त्रुटि मिलती है:

एक रेफरेंसियल कॉन्स्ट्रेन में एक आश्रित संपत्ति को स्टोर-जेनरेट किए गए कॉलम में मैप किया जाता है। कॉलम: 'भुगतान आईडी'।

public bool PayForItem(int terminalId, double paymentAmount, 
      eNums.MasterCategoryEnum  mastercategoryEnum, int CategoryId, int CategoryItemId)
    {

        using (var dbEntities = new DatabaseAccess.Schema.EntityModel())
        {
            int pinnumber = 0;
            long pinid = 1; //getPinId(terminalId,ref pinnumber) ;
            var payment = new DatabaseAccess.Schema.Payment();
            payment.CategoryId = CategoryId;
            payment.ItemCategoryId = CategoryItemId;
            payment.PaymentAmount = (decimal)paymentAmount;
            payment.TerminalId = terminalId;
            payment.PinId = pinid;

            payment.HSBCResponseCode = "";
            payment.DateActivated = DateTime.Now;
            payment.PaymentString = "Payment";
            payment.PromotionalOfferId = 1;
            payment.PaymentStatusId = (int)eNums.PaymentStatus.Paid;

            //payment.PaymentId = 1;

            dbEntities.AddToPayments(payment);
            dbEntities.SaveChanges();
        }
        return true;
    }

स्कीमा है:




स्वीकृत उत्तर के अतिरिक्त, यदि आप ईएफ रिवर्स पॉको जनरेटर या कुछ अन्य टूल का उपयोग कर रहे हैं जो आपके पॉको उत्पन्न करता है, तो सुनिश्चित करें कि आप उन्हें पुन: उत्पन्न करते हैं!




मुझे एक ही समस्या थी और एसक्यूएल सर्वर में टेबल डिज़ाइन में कुछ खोदने के बाद, मैंने पाया कि गलती से मैंने टेबल की प्राथमिक कुंजी को विदेशी कुंजी के रूप में भी सेट किया है।

एसक्यूएल सर्वर टेबल डिजाइन प्रवाह

इस छवि में आप देख सकते हैं कि जॉबआईडी तालिका की प्राथमिक कुंजी है लेकिन गलती से विदेशी कुंजी भी है।




मेरे मामले में यह बस इतना था कि मुझे डेटाबेस पर ठीक से सेट अनुमति नहीं थी। मैंने केवल सेट पढ़ा था और एंटिटी फ्रेमवर्क मुझे एक रेफरेंशियल कॉन्स्ट्रेनट त्रुटि दे रहा था जिसने मुझे फेंक दिया। अतिरिक्त लेखन अनुमतियां जोड़ा गया और सब ठीक था।




मेरे लिए यह तालिका में गलत तरीके से रखा गया विदेशी कुंजी था लेकिन इसे ठीक करने के लिए तालिका को बदलने के बाद भी, यह अभी भी काम नहीं कर रहा था। आपको EDMX फ़ाइलों को अपडेट करने की आवश्यकता है (और मॉडल से तालिका को "रीफ्रेश" करने के लिए पर्याप्त नहीं है, आपको मॉडल में तालिका को फिर से निकालने और जोड़ने की आवश्यकता है)।