繁体   English   中英

在没有Visual Studio的EF6中从Model.edmx生成模型代码

[英]Generating Model code from Model.edmx in EF6 without Visual Studio

对于我们的应用程序,我们不在构建过程中使用Visual Studio; Visual Studio不在构建服务器上。 一般来说,我们将Visual Studio保持为开发应用程序的“不错”,但可重复构建的关键要求都是开源/免费提供的。

我现在正在考虑升级到EF6。 我不想检查生成的模型代码,因此我需要一种从edmx文件执行模型生成的方法,而不需要Visual Studio。

以前,我们使用过EdmGen,因为它随.NET框架一起提供,我们很高兴我们的构建服务器依赖于它。 在EF6中,生成代码的推荐方法是使用T4模板。

但是,T4代码生成工具内置于Visual Studio中,不单独提供。

这个问题包含部分答案。 但是,这两个答案都存在问题。

首先,建议许可证允许您从Visual Studio安装中将必要的文件复制到构建服务器。 但是,这是一个丑陋的解决方案,因为这意味着设置新的构建服务器不能自动化,并且取决于存在的Visual Studio安装。 此外,对于EF6模型生成,我们还需要Visual Studio安装中的EF.Utility.CS.ttinclude。 我收到一封来自微软开发人员的电子邮件说,在他的非法律意见中,我也可以复制该文件,但是看着许可证,我不相信。

其次,更有吸引力的是,MonoDevelop中有一个TextTransform的开源实现 但是,我们再次忽略了包含文件,另外,我不清楚这个TextTransform工具的工作方式是否完全相同,并且可以处理EF6给我的模板。 到目前为止,我有错误试图让它工作。

那么:有没有人有一个工作的例子来做EF6模型生成而不使用只能从Visual Studio安装获得的工具?

我现在有这个工作。 我完成的解决方案是使用MonoDevelop 的TextTransform的开源实现 事实证明,实体框架创建的tt模板使用的模板包含的文件也可以在开放许可下使用。 它们可以从这里获得

为了使它能够使用Visual Studio创建的模板,我不得不进行一些更改。

在Model.tt中,我不得不删除GetNamespaceName中的#if PREPROCESSED_TEMPLATE检查。

其次,我不得不对include文件做一些小修改。 完整的修改文件在这里

您自己需要执行此操作的所有文件都在该存储库中 ,但请注意,我不保证我在其中包含的TextTransform的二进制文件是最新的 - 您应该构建自己的/从MonoDevelop中获取它们安装。 只需添加一个Model.tt文件,然后使用以下命令调用:

./TextTransform.exe -out Models.cs -I INCLUDES Model.tt

其中“INCLUDES”是修改后的EF.Utility.CS.ttinclude的文件夹。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM