c# - इकाई फ़्रेमवर्क: एक विदेशी कुंजी संपत्ति सेट करना




ado.net-entity-data-model (4)

आप एक एक्सटेंशन विधि बना सकते हैं जो इन ID के आधार पर इकाई का निर्माण करती है।

हमारे पास ऐसी मेज है जो लगभग इस तरह दिखती है:

CREATE TABLE Lockers 
{
  UserID int NOT NULL PRIMARY KEY (foreign key),
  LockerStyleID int (foreign key),
  NameplateID int (foreign key)
}

सभी चाबियाँ अन्य तालिकाओं से संबंधित हैं, लेकिन जिस तरह से आवेदन वितरित किया गया है, उसके कारण पैरामीटर के रूप में आईडी को पार करना हमारे लिए आसान है तो हम यह करना चाहते हैं:

Locker l = new Locker { 
  UserID = userID, 
  LockerStyleID = lockerStyleID, 
  NameplateID = nameplateID 
};
entities.AddLocker(l);

हम इसे LINQ-to-SQL में कर सकते हैं, लेकिन ईएफ नहीं?


एक EntityKey का उपयोग कर अपनी समस्या का हल;)

ALK।


मैं चीजों को आसान बनाने के लिए क्या कर रहा हूं, आंशिक कक्षा में विदेशी कुंजी संपत्ति को जोड़ रहा हूं:

public int UserID
{
   get
   {
      if (this.User != null)
         return this.User.UserID;
   }
   set 
   {
      this.UserReference.EntityKey = new System.Data.EntityKey("entities.User", "ID", value);
   }
}

एक और तरीका यदि आप 'प्रदूषण' को ध्यान नहीं देते हैं, तो डीबी स्कीमा एक गणना की गई कॉलम को जोड़ना है, उदाहरण के लिए यदि आपके पास एक विदेशी कुंजी फ़ील्ड है, तो आप एफकैपर ग्राहक की एक नई गणना वाली कॉलम FK_Customer_Computed को परिभाषित कर सकते हैं, जिसकी अभिव्यक्ति FK_Customer है। जब आप अपने एड एमएक्स मॉडल को अपडेट करते हैं तो फ़ील्ड एक नियमित फ़ील्ड के समान दिखाई देगी, जिसे आप इकाई ऑब्जेक्ट से संदर्भ कर सकते हैं।

या ईएफ 4 के लिए प्रतीक्षा करें :)





ado.net-entity-data-model