से हम .edmx
मॉडल का उपयोग कर डेटाबेस-प्रथम दृष्टिकोण के साथ ईएफ 4.0 का उपयोग कर रहे हैं।ईएफ 6 कोड में इकाई वर्गों को कैसे बनाया जाता है - पहले डेटाबेस
अब हम ईएफ 6.1.3 में अपग्रेड कर रहे हैं, और हम जांच कर रहे हैं कि .edmx
मॉडल के साथ या उसके बिना जाना है या नहीं। हम निश्चित रूप से अभी भी हमारे डेटाबेस स्कीमा के नियंत्रण में रहना चाहते हैं - इसलिए हम SQL स्क्रिप्ट के साथ नई टेबल आदि बनायेंगे और फिर मौजूदा डेटाबेस से ईएफ मॉडल (या तो .edmx
या सिर्फ कोड कक्षाएं) उत्पन्न करेंगे।
विजुअल स्टूडियो 2013 के साथ अपने परीक्षणों के दौरान, मैंने एक परेशान बिंदु देखा जब ईएफ 6 मौजूदा डेटाबेस से कक्षाएं बनाता है। मेरे पास Customer
वर्ग है जो Contact
कक्षा से तीन बार लिंक करती है - एक बार DesignContact
के लिए, एक बार SalesContact
और SupportContact
के लिए तीसरी बार। आदि Customer
तालिका में कॉलम के रूप में संग्रहीत हैं।
CREATE TABLE dbo.Contact
(
ContactID INT NOT NULL
CONSTRAINT PK_Contact PRIMARY KEY CLUSTERED,
Name VARCHAR(200),
Address VARCHAR(200),
ZipCode VARCHAR(20),
City VARCHAR(100),
Phone VARCHAR(100)
)
CREATE TABLE dbo.Customer
(
CustomerID INT NOT NULL
CONSTRAINT PK_Customer PRIMARY KEY CLUSTERED,
Name VARCHAR(200),
-- other properties
DesignContactID INT
CONSTRAINT FK_Customer_DesignContact
FOREIGN KEY REFERENCES dbo.Contact(ContactID),
SalesContactID INT
CONSTRAINT FK_Customer_SalesContact
FOREIGN KEY REFERENCES dbo.Contact(ContactID),
SupportContactID INT
CONSTRAINT FK_Customer_SupportContact
FOREIGN KEY REFERENCES dbo.Contact(ContactID),
)
जब डेटाबेस से कक्षाएं बनाने, मैं इस देखें::
आप इस T-SQL का उपयोग करने वालों कक्षाएं बना सकता है
Customer
वर्ग क्षेत्रों के रूप में मेरे तीनxxxContactId
स्तंभ होते हैं - जैसा कि- ईएफ भी
Contact
प्रकार के तीन नेविगेशन गुण उत्पन्न करता है - लेकिन यह उन्हेंContact
,Contact1
, 0 कहता है- uuuuuggghHHHH!
मैं उन बुरी तरह खराब नामित नेविगेशन गुण के आसपास पाने के लिए एक रास्ता खोजने के लिए बुरा है क्योंकि ..... ये हैं कोशिश कर रहा हूँ:
- उनकी नहीं सहज ज्ञान युक्त - जो एक अंक जो संपर्क करने के लिए अब ?
- "स्थिर" हैं, या वे समय के साथ बदल सकते हैं, अगर
Contact
के चौथे रिश्ते को पेश किया गया है? यकीन नहीं ..... (इस पर कोई दस्तावेज़ नहीं मिल सकता है) - सिर्फ उनके नाम बिल्कुल भयानक हैं ...... उन्हें
DesignContact
क्यों कहा जाता है (DesignContactId
पर आधारित),SalesContact
(SalesContactId
पर आधारित) आदि।?
एफई 4.1 में और ऊपर, आप .edmx
लिए टी -4 टेम्पलेट्स जोड़ सकते हैं और पीढ़ी प्रक्रिया को प्रभावित करने में सक्षम थे - कि अभी भी संभव हो, EF6 साथ किसी भी तरह है अगर आप "मौजूदा डेटाबेस से उत्पन्न कोड-पहले" कर रहे हैं दृष्टिकोण? मुझे अब उस विषय पर कोई ब्लॉग पोस्ट या आलेख नहीं मिला .....
या ईएफ कैसे कक्षाएं उत्पन्न करता है - सबसे विशेष रूप से नेविगेशन गुणों को प्रभावित करने का एक और तरीका है? क्या मैं इसे प्रभावित करने के लिए किसी प्रकार का कस्टम सम्मेलन या कुछ परिभाषित कर सकता हूं?
@JulieLerman: इस पर कोई विचार (EF_ की _Queen रूप :-)?) –
@ रोवनमिलर: इसे संभालने के लिए आपकी आस्तीन को कोई विचार या चाल? –
लागू: http://stackoverflow.com/a/13064383/1207195? (हथौड़ा की वजह से डुप्ली के रूप में मतदान नहीं) –