为了账号安全,请及时绑定邮箱和手机立即绑定

反向工程数据库时改进导航属性名称

反向工程数据库时改进导航属性名称

蛊毒传说 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 关注
  • 617 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信