c# – 如何以编程方式运行EntityFramework反向POCO代码优先生成器(T4)?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 如何以编程方式运行EntityFramework反向POCO代码优先生成器(T4)?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3477字,纯文字阅读大概需要5分钟。
内容图文
![c# – 如何以编程方式运行EntityFramework反向POCO代码优先生成器(T4)?](/upload/InfoBanner/zyjiaocheng/796/2d6060d0d3f14701b0ac2b38a9520a3b.jpg)
我想使用“EntityFramework Reverse POCO Code First Generator”,但程序上不是来自VS.
EntityFramework Reverse POCO Code Github
实际上我想从C#代码为此目的运行T4
我为此目的下载了simple-t4-engine
Simple T4 Engine
我写了一些像这样的代码:
Engine engine = new Engine();
TemplatingHost host = new TemplatingHost(System.Text.Encoding.UTF32);
host.IncludeFileSearchPaths.Add(@"D:\IncludeFiles");
string templateFileName = "some template";
// NOTE: Doesn't actually seem to care about the name of the template file? True, but does use the path to search for stuff.
host.TemplateFile = templateFileName;
string input = File.ReadAllText(@"D:\IncludeFiles\T4Files\Database.tt");
string output = engine.ProcessTemplate(input, host);
File.WriteAllText(@"D:\IncludeFiles\T4Files\Output.txt", output);
StringBuilder sb = new StringBuilder();
foreach (CompilerError error in host.Errors)
{
sb.AppendLine(error.ToString());
}
File.WriteAllText(@"D:\IncludeFiles\T4Files\ErrorLog.txt", sb.ToString());
但是我遇到了一些错误(Output.txt为空)
ErrorLog.txt:
error : Running transformation: System.InvalidCastException: Unable to cast transparent proxy to type 'System.IServiceProvider'.
at Microsoft.VisualStudio.TextTemplating31A64EBEAB614B57E81A1789EC7637709A091834D5CA991E8A2195B15E2A0DFF588B0C98DCEDA8AD6902329A28B09556BDE2A9BEDFA48812CCC12CA1E68AA1C9.GeneratedTextTransformation.GetDTE()
at Microsoft.VisualStudio.TextTemplating31A64EBEAB614B57E81A1789EC7637709A091834D5CA991E8A2195B15E2A0DFF588B0C98DCEDA8AD6902329A28B09556BDE2A9BEDFA48812CCC12CA1E68AA1C9.GeneratedTextTransformation.GetCurrentProject()
at Microsoft.VisualStudio.TextTemplating31A64EBEAB614B57E81A1789EC7637709A091834D5CA991E8A2195B15E2A0DFF588B0C98DCEDA8AD6902329A28B09556BDE2A9BEDFA48812CCC12CA1E68AA1C9.GeneratedTextTransformation.GetConfigPaths()
at Microsoft.VisualStudio.TextTemplating31A64EBEAB614B57E81A1789EC7637709A091834D5CA991E8A2195B15E2A0DFF588B0C98DCEDA8AD6902329A28B09556BDE2A9BEDFA48812CCC12CA1E68AA1C9.GeneratedTextTransformation.GetConnectionString(String& connectionStringName, String& providerName, String& configFilePath)
at Microsoft.VisualStudio.TextTemplating31A64EBEAB614B57E81A1789EC7637709A091834D5CA991E8A2195B15E2A0DFF588B0C98DCEDA8AD6902329A28B09556BDE2A9BEDFA48812CCC12CA1E68AA1C9.GeneratedTextTransformation.InitConnectionString()
at Microsoft.VisualStudio.TextTemplating31A64EBEAB614B57E81A1789EC7637709A091834D5CA991E8A2195B15E2A0DFF588B0C98DCEDA8AD6902329A28B09556BDE2A9BEDFA48812CCC12CA1E68AA1C9.GeneratedTextTransformation.GetDbProviderFactory()
at Microsoft.VisualStudio.TextTemplating31A64EBEAB614B57E81A1789EC7637709A091834D5CA991E8A2195B15E2A0DFF588B0C98DCEDA8AD6902329A28B09556BDE2A9BEDFA48812CCC12CA1E68AA1C9.GeneratedTextTransformation.TransformText()
任何人都可以帮我解决这个问题吗?
或者引入一种更好的方法在运行时运行Database.tt以编程方式在C#中执行.
Database.tt
> EF.Reverse.POCO.Core.ttinclude
> EF.Reverse.POCO.ttinclude
> EF.Utility.CS.ttinclude
> EF6.Utility.CS.ttinclude
> GenerateTSQL.Utility.ttinclude
解决方法:
我是Entity Framework Reverse POCO Generator的作者.
不幸的是,你无法在Visual Studio之外运行它,因为代码依赖于它. EnvDTE使反向生成器能够从Visual Studio项目添加/删除生成的文件.没有它,它将无法完成它的工作.
其他人问他们是否可以在构建服务器上运行它.但是,构建服务器可能无法访问逆向工程所需的数据库.因此,始终通过保存tt设置文件生成代码,并将生成的代码提交到源代码控制,并从那里提交到构建服务器.
顺便说一句,要明确一点:我不希望这个项目在Visual Studio之外自动化,或者包含在任何类型的其他产品中.许可证中规定了这一点.
内容总结
以上是互联网集市为您收集整理的c# – 如何以编程方式运行EntityFramework反向POCO代码优先生成器(T4)?全部内容,希望文章能够帮你解决c# – 如何以编程方式运行EntityFramework反向POCO代码优先生成器(T4)?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。