实体框架 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<1>
更改为"0 IDbSet<1>
,上下文将具有IDbSets
。
旁注:如果这是模拟上下文的操作的一部分,您应该知道这是非常没有希望的。
【讨论】:
你认为嘲笑上下文是没有希望的背后的原因是什么?对此似乎有很大的不同意见 谢谢,我认为在简单的情况下模拟上下文有一些价值,但它肯定是有限的。我们目前正在研究模拟上下文和批准测试的混合体。我怀疑我们最终会选择后者。对这些东西进行单元测试肯定比它应该更难以上是关于实体框架 4.1 T4 输出到 IDbset的主要内容,如果未能解决你的问题,请参考以下文章
当我们需要生成模板输出工件时,我们如何用 Roslyn 替换 T4