首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >反向POCO生成器:如何重命名反向外键?

反向POCO生成器:如何重命名反向外键?
EN

Stack Overflow用户
提问于 2018-05-17 14:00:17
回答 2查看 820关注 0票数 0

我正在使用Simon Hughes的实体-框架反向POCO生成器为我的Sql Server数据库生成代码优先的EF类。生成器是高度可配置的,我很清楚如何重命名多对一关系中的外键列。我想不出如何让生成器重命名反向关系。

例如,我有一个名为Product_User的表,其中有一个名为User_Info_ID的列,该列引用了表USER_INFO。当我运行生成器时,User类中的一对多关系定义如下:

代码语言:javascript
复制
    /// <summary>
    /// Child ProductUsers where [Product_User].[User_Info_ID] point to this entity (FK_PRODUCT_USER_User)
    /// </summary>
    public virtual System.Collections.Generic.ICollection<ProductUser> User1 { get; set; } // Product_User.FK_PRODUCT_USER_User

我怎么才能让它生成这个呢?

代码语言:javascript
复制
    public virtual System.Collections.Generic.ICollection<ProductUser> UserProducts { get; set; } 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-10 09:08:42

在*.tt文件的

代码语言:javascript
复制
Settings.ForeignKeyName = (tableName, foreignKey, foreignKeyName, relationship, attempt) => {

    if (foreignKey.PkTableName == "USER_INFO" && foreignKey.FkTableName == "Product_User" 
        && foreignKey.FkColumn == "User_Info_ID" && relationship == Relationship.OneToMany)
        return "UserProducts";

}

foreignKey参数的属性具有出现在数据库架构中的值,而不是生成器的驼峰大小写友好输出。我通过在*.tt文件中设置断点,并在T4解决方案资源管理器中右键单击*.tt文件来调用调试VS.NET模板,从而发现了这一点。

票数 0
EN

Stack Overflow用户

发布于 2018-05-18 00:51:23

反向POCO项目使用代码文本模板生成代码。负责生成类的列名和属性名的tt应该在EF.Reverse.POCO.Core.ttinclude中

GetUniqueColumnName会经过一系列步骤才能得到该名称。它可能有一个唯一的名称clash,这就是为什么它以1结尾对列名进行排序/序列化。

我已经附上了这个过程的图像。您还可以向控制台写入一些内容,并在保存database.tt时查看输出窗口,以了解发生了什么。

This is the screenshot of the EF.Reverse.POCO.core.ttinclude

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50384300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档