实体框架 4.1 T4 输出到 IDbset

Posted

技术标签:

【中文标题】实体框架 4.1 T4 输出到 IDbset【英文标题】:Entity Framework 4.1 T4 Output to IDbset 【发布时间】:2013-04-10 16:08:36 【问题描述】:

我想让 Visual Studio 创建的 T4 模板将我的实体输出为 IDbset 而不是 DbSet 知道怎么做吗?

【问题讨论】:

【参考方案1】:

我假设您已经有一个生成DbContext 的 t4 模板。因此,只需编辑上下文的 T 模板,它的名称可能类似于 Yourmodelname.Context.tt。里面有一个这样的块(我用的是EF 5):

public string DbSet(EntitySet entitySet)

    return string.Format(
        CultureInfo.InvariantCulture,
        "0 DbSet<1> 2  get; set; ",
        Accessibility.ForReadOnlyProperty(entitySet),
        _typeMapper.GetTypeName(entitySet.ElementType),
        _code.Escape(entitySet));

现在将"0 DbSet&lt;1&gt; 更改为"0 IDbSet&lt;1&gt;,上下文将具有IDbSets

旁注:如果这是模拟上下文的操作的一部分,您应该知道这是非常没有希望的。

【讨论】:

你认为嘲笑上下文是没有希望的背后的原因是什么?对此似乎有很大的不同意见 谢谢,我认为在简单的情况下模拟上下文有一些价值,但它肯定是有限的。我们目前正在研究模拟上下文和批准测试的混合体。我怀疑我们最终会选择后者。对这些东西进行单元测试肯定比它应该更难

以上是关于实体框架 4.1 T4 输出到 IDbset的主要内容,如果未能解决你的问题,请参考以下文章

当我们需要生成模板输出工件时,我们如何用 Roslyn 替换 T4

T4 TemplateFileManager 输出到项目文件夹

实体框架 5 - T4 生成的上下文类导致“参数名称重复”

使用 moq 对实体框架进行单元测试

使用T4模板为EF框架添加数据库实体注释

使用T4模板为EF框架添加数据库实体注释(转)