I want to use the "EntityFramework Reverse POCO Code First Generator", but not programmatically from VS.
EntityFramework Reverse POCO Github Code
In fact, I want to run T4 for this purpose from C # code. For this, I downloaded a simple-t4 engine
A simple T4 engine
I wrote code like this:
Engine engine = new Engine();
TemplatingHost host = new TemplatingHost(System.Text.Encoding.UTF32);
host.IncludeFileSearchPaths.Add(@"D:\IncludeFiles");
string templateFileName = "some template";
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());
But I got some errors (Output.txt is empty)
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()
Can someone help me solve this problem? or introduce a better way to run Database.tt at run time to execute in C # programmatically.
Database.tt
- EF.Reverse.POCO.Core.ttinclude
- EF.Reverse.POCO.ttinclude
- EF.Utility.CS.ttinclude
- EF6.Utility.CS.ttinclude
- GenerateTSQL.Utility.ttinclude