मैं एंटरिटी फ्रेमवर्क पावर टूल्स बीटा 2 के साथ विजुअल स्टूडियो के साथ एंटीटी फ्रेमवर्क 5 का उपयोग कर रहा हूं ताकि अभियंता मध्यम आकार के डेटाबेस (~ 100 टेबल) को रिवर्स किया जा सके।डेटाबेस को रिवर्स करते समय नेविगेशन प्रॉपर्टी नामों में सुधार करें
दुर्भाग्य से, नेविगेशन गुणों के अर्थपूर्ण नाम नहीं हैं।
CREATE TABLE Contacts (
ContactID INT IDENTITY (1, 1) NOT NULL,
...
CONSTRAINT PK_Contacts PRIMARY KEY CLUSTERED (ContactID ASC)
}
CREATE TABLE Projects (
ProjectID INT IDENTITY (1, 1) NOT NULL,
TechnicalContactID INT NOT NULL,
SalesContactID INT NOT NULL,
...
CONSTRAINT PK_Projects PRIMARY KEY CLUSTERED (ProjectID ASC),
CONSTRAINT FK_Projects_TechnicalContact FOREIGN KEY (TechnicalContactID)
REFERENCES Contacts (ContactID),
CONSTRAINT FK_Projects_SalesContact FOREIGN KEY (SalesContactID)
REFERENCES Contacts (ContactID),
...
}
यह इस तरह की कक्षाओं उत्पन्न होगा: उदाहरण के लिए, अगर वहाँ दो तालिकाओं हैं
public class Contact
{
public Contact()
{
this.Projects = new List<Project>();
this.Projects1 = new List<Project>();
}
public int ContactID { get; set; }
// ...
public virtual ICollection<Project> Projects { get; set; }
public virtual ICollection<Project> Projects1 { get; set; }
}
public class Project
{
public Project()
{
}
public int ProjectID { get; set; }
public int TechnicalContactID { get; set; }
public int SalesContactID { get; set; }
// ...
public virtual Contact Contact { get; set; }
public virtual Contact Contact1 { get; set; }
}
मैं कई वेरिएंट है जो सभी इस से बेहतर होगा देखें:
- उपयोग विदेशी कुंजी का नाम: उदाहरण के लिए, अंतिम अंडरस्कोर (
FK_Projects_TechnicalContact
->TechnicalContact
) के बाद सबकुछ। हालांकि यह शायद सबसे अधिक नियंत्रण वाला समाधान होगा, मौजूदा टेम्पलेट्स के साथ एकीकृत करना अधिक कठिन हो सकता है। उदाहरणTechnicalContactIDProjects
(संग्रह) और: - (>TechnicalContact
TechnicalContactID
) - उपयोग संपत्ति नाम की संयोजन और मौजूदा समाधान पट्टी प्रत्यय
ID
बंद: - विदेशी कुंजी स्तंभ के लिए इसी संपत्ति नाम का प्रयोग करें
TechnicalContactIDContact
सौभाग्य से, it is possible to modify the templates by including them in the project।
संशोधनों को Entity.tt
और Mapping.tt
पर बनाना होगा। मुझे उन परिवर्तनों को करने के लिए इंटेलिजेंस और डीबग संभावनाओं की कमी के कारण यह मुश्किल लगता है।
श्रृंखलाबद्ध संपत्ति के नाम (तीसरी उपरोक्त सूची में) शायद लागू करने के लिए सबसे आसान उपाय है।
public class Contact
{
public Contact()
{
this.TechnicalContactIDProjects = new List<Project>();
this.SalesContactIDProjects = new List<Project>();
}
public int ContactID { get; set; }
// ...
public virtual ICollection<Project> TechnicalContactIDProjects { get; set; }
public virtual ICollection<Project> SalesContactIDProjects { get; set; }
}
public class Project
{
public Project()
{
}
public int ProjectID { get; set; }
public int TechnicalContactID { get; set; }
public int SalesContactID { get; set; }
// ...
public virtual Contact TechnicalContactIDContact { get; set; }
public virtual Contact SalesContactIDContact { get; set; }
}
एफवाईआई, आप टी 4 संपादन को थोड़ा आसान बनाने के लिए मूर्त टी 4 संपादक डाउनलोड और उपयोग कर सकते हैं: http://t4-editor.tangible-engineering.com/T4- संपादक- विज़ुअल- टी 4-Editing.html। मुफ्त संस्करण सीमित है, लेकिन यह कुछ भी नहीं से बेहतर है :) – Spikeh