【问题标题】:T4 POCO template - deleting auto-generated .cs file in the .tt fileT4 POCO 模板 - 删除 .tt 文件中自动生成的 .cs 文件
【发布时间】:2011-05-10 23:34:24
【问题描述】:

我正在修改“ADO.NET POCO 实体生成器”模板来创建自己的 POCO 类。我的模型的 .tt 文件称为 Model1.tt。当您展开 Model1.tt 时,您将看到一个名为 Model1.cs 的文件,其中包含一些自动生成的“修复”代码:

public class FixupCollection<T> : ObservableCollection<T>
{
    //Auto-generated code here
}

我不需要这个 Model1.cs 文件。是否可以修改 Model1.tt 文件使其根本不创建 Model1.cs 文件?

【问题讨论】:

    标签: templates entity-framework-4 poco t4


    【解决方案1】:

    不确定如何完全删除文件,但要删除 FixupCollection 类,您可以删除或注释掉 WriteCustomObservableCollection();。请注意,您还必须修改为您的 POCO 导航属性生成 FixupCollections 的模板部分。

    【讨论】:

    • 是的——这就是我最终要做的。
    【解决方案2】:

    文件是使用 EntityFrameworkTemplateFileManager 创建的。在类型的 tt 文件的第 26 行,您会看到它正在初始化:

    EntityFrameworkTemplateFileManager fileManager = EntityFrameworkTemplateFileManager.Create(this);
    

    您会在任何地方看到它仅用于在文件中搜索“fileManager”。

    【讨论】:

    • 如果您在整个 Model1.tt 文件中注释掉 fileManager,那么您会收到一些错误,并且不会生成任何实体。
    • 我在运行模板时没有生成 Model1.cs 文件 - 只有生成的文件用于“真实”实体。我猜这个文件是由于您在模板中进行的自定义而生成的。
    • 嗯……我又重新开始了。 1)我添加了ADO.NET实体数据模型(代码生成策略=无); 2) 增加了“添加代码生成项...”; 3) 新增“ADO.NET POCO 实体生成器”; 4) 注释掉 Model1.tt 中的“fileManager”; 5)删除Model1.tt下的所有.cs文件,然后运行Model1.tt模板。结果:仅生成 Model1.cs。没有为我的模型中的每个实体生成 .cs 文件。但是,Model1.cs 包含实体的定义。
    【解决方案3】:

    有同样的问题 - 一种解决方案是将类本身用作基类等。我知道,不完全删除它,但我看不出有什么方法可以轻松地做到这一点。

    【讨论】:

    • 在尝试了所有其他方法之后,我也使用了这个 hack……但我认为我可以采取一些措施来避免这种情况。
    猜你喜欢
    • 2019-06-16
    • 1970-01-01
    • 1970-01-01
    • 2011-10-16
    • 2011-05-31
    • 1970-01-01
    • 2012-08-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多