亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

反向工程數據庫時改進導航屬性名稱

反向工程數據庫時改進導航屬性名稱

蠱毒傳說 2019-11-12 10:29:19
我正在將帶有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; }     // ...}
查看完整描述

3 回答

  • 3 回答
  • 0 關注
  • 676 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號