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

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

【问题讨论】:

    标签: .net c#-4.0 entity-framework-4.1


    【解决方案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

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

    【讨论】:

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