2012-02-18 16 views
5

मैं ग्राहक जानकारी प्रदर्शित करना चाहता हूं। फिर मैंने कुछ कक्षाएं बनाई; ग्राहक, वितरण, आदेश, ऑर्डरलाइन, उत्पाद, और किराये पर डीबी। किराये पर डीबी कक्षा उत्पाद, ग्राहक, आदेश, ऑर्डरलाइन, और वितरण के 5 डीबीसेट सेट करता है। जब मैं सूची दृश्य के साथ UserController बनाने के लिए, मैं ग्राहकों की जानकारी प्रदर्शित नहीं कर सकता है, और यह त्रुटियों लेता है:एएसपी.नेट एमवीसी 3 EntityType की कोई कुंजी परिभाषित नहीं है

One or more validation errors were detected during model generation: 
System.Data.Edm.EdmEntityType: : EntityType 'OrderLine' has no key defined. Define the key for this EntityType. 
System.Data.Edm.EdmEntityType: : EntityType 'Delivery' has no key defined. Define the key for this EntityType. 
System.Data.Edm.EdmEntitySet: EntityType: EntitySet �OrderLine� is based on type �OrderLine� that has no keys defined. 
System.Data.Edm.EdmEntitySet: EntityType: EntitySet �Delivery� is based on type �Delivery� that has no keys defined. 

मैं क्यों इन संस्थाओं कुंजी की आवश्यकता नहीं जानते? मुझे इस त्रुटि के लिए कोई जानकारी नहीं है .. क्या आप मेरी मदद कर सकते हैं?

--UserController.cs--

namespace MvcApplication2.Controllers 
{ 
public class UserController : Controller 
    { 
    // 
    // GET: /User/ 
    rentalDB _db = new rentalDB(); 

    public ActionResult Index() 
    { 
     var model = _db.Customer; 
     return View(model); 
    } 
    } 
} 

--Delivery.cs मॉडल folder--

namespace MvcApplication2.Models 
{ 
    public class Delivery 
    { 
    public int trackId { get; set; } 
    public String address { get; set; } 
    public String postCode { get; set; } 
    public decimal deliveryPrice { get; set; } 
    public DateTime deliveryDate { get; set; } 
    public DateTime returnDate { get; set; } 
    } 
} 

--OrderLine.cs में मॉडल folder-- में

namespace MvcApplication2.Models 
{ 
    public class OrderLine 
    { 
    public int basketId { get; set; } 
    public int productId { get; set; } 
    public int quantity { get; set; } 
    } 
} 

उत्तर

17

इकाई ढांचे का उपयोग करने के लिए, प्रत्येक इकाई को एक कुंजी की आवश्यकता होती है। इस प्रकार ईएफ अपने कैश में वस्तुओं को ट्रैक करता है, पोस्ट अंतर्निहित डेटा स्टोर पर अपडेट होते हैं, और संबंधित ऑब्जेक्ट्स को एकसाथ लिंक करते हैं।

तुम्हारा पहले से ही कुंजी है, तो आप सिर्फ उनके बारे में एफई बताने की आवश्यकता की वस्तुओं: यदि आप एक ORM (वस्तु-संबंधपरक नक्शाकार) NHibernate या इकाई की रूपरेखा है कि आप एक संबंधपरक नक्शा में मदद करता है की तरह ढांचे का उपयोग करते हैं

namespace MvcApplication2.Models 
{ 
    public class Delivery 
    { 
    [Key] public int trackId { get; set; } 
    public String address { get; set; } 
    public String postCode { get; set; } 
    public decimal deliveryPrice { get; set; } 
    public DateTime deliveryDate { get; set; } 
    public DateTime returnDate { get; set; } 
    } 
} 
+0

यह मेरे लिए एक विशेष मामले में काम किया। मैंने मॉडल के लिए कोड लिखने के बाद एक नियंत्रक जोड़ा, और त्रुटि नहीं मिली। उस समय मुझे एहसास हुआ कि मॉडल वह नहीं था जो मैं चाहता था कि सभी जेनरेट किए गए विचार बहुत गलत थे इसलिए मैंने नियंत्रक/विचार हटा दिए। फिर जब मैंने मॉडल को ठीक किया और नियंत्रक जोड़ा तो त्रुटि दिखाई दी। एक घंटे के लिए घूमने के बाद मैंने [कुंजी] जोड़ा और यह काम किया। शायद दृश्य स्टूडियो एमवीसी अजीबता या कैश, पता नहीं ... – isitdanny

0

किसी ऑब्जेक्ट मॉडल के लिए डेटाबेस आपको कुछ ऐसी चीज चाहिए जो आपको अपने ऑब्जेक्ट्स के बीच मेमोरी और डेटा के पंक्तियों में अपनी ऑब्जेक्ट्स के बीच सार्थक संबंध बनाने देगी और यह बात एक कुंजी है (एनएचबीरनेट इसे आईडी के रूप में आईडी) और आमतौर पर यह प्राकृतिक तरीका है कि आरडीबीएमएस ट्रैक प्राथमिक कुंजी का उपयोग करके रिकॉर्ड (आमतौर पर आप अपनी ऑब्जेक्ट की कुंजी के रूप में डीबी प्राथमिक कुंजी का उपयोग करते हैं) जब आप यह देखने के लिए जांचते हैं कि दो ऑब्जेक्ट्स == ऑपरेटर का उपयोग कर बराबर हैं या नहीं उन वस्तुओं में एक ही संदर्भ (या स्मृति में पता) है। जब आप ओआरएम का उपयोग कर रहे हों तो इस तरह की समानता बहुत उपयोगी नहीं होती है। आप विभिन्न संदर्भों के साथ स्मृति में रिकॉर्ड के कई उदाहरण लोड कर सकते हैं ताकि उनके संदर्भों से वस्तुओं की समानता की जांच करना असंभव हो। वह मूल्य के समानता की जांच करते समय आता है इस खेल में खेलने और चाबियाँ मुख्य भूमिका निभाती हैं।

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