我正在將帶有Visual Studio的Entity Framework 5與Entity Framework Power Tools Beta 2一起對中等大小的數據庫(?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)之后的所有內容。盡管這可能是控制最多的解決方案,但是與現有模板集成起來可能會更加困難。使用與外鍵列相對應的屬性名稱:刪除后綴ID(TechnicalContactID-> TechnicalContact)使用屬性名稱和現有解決方案的連接:示例TechnicalContactIDProjects(集合)和TechnicalContactIDContact幸運的是,可以通過將模板包括在項目中來修改模板。這些修改將不得不作出Entity.tt和Mapping.tt。由于缺乏智能感知和調試的能力來進行這些更改,我發現這很困難。串聯屬性名稱(在上面的列表中排第三)可能是最容易實現的解決方案。如何在中更改導航屬性的創建Entity.tt并Mapping.tt實現以下結果:public class Contact{ public Contact() { this.TechnicalContactIDProjects = new List<Project>(); this.SalesContactIDProjects = new List<Project>(); } public int ContactID { get; set; } // ...}
添加回答
舉報
0/150
提交
取消