使用教程:http://www.asp.net/mvc/tutorials/mvc-5/database-first-development/creating-the-web-application我创建了一个包含子文件的Entitiy-Framework第6版文件(.edmx)。这个文件在我的项目中:SimpleSalesOrder.DataLayer.SQL。
到目前为止一切都很好,但我想在SimpleSalesOrder.BusinessModel.SQL项目中生成业务模型类,以便从BusinessModel中分离DataLayer。
我非常确定我必须编辑T4模板才能使其正常工作。命名空间本身没有问题,因为我可以在创建EF-Contect时输入它。
我找到了创建文件的Point:
foreach (var entity in typeMapper.GetItemsToGenerate<EntityType>(itemCollection))
{
fileManager.StartNewFile(entity.Name + ".cs");
BeginNamespace(code);
#>
但是你可以看到,它只传递了Class-Name。 输出本身在流程程序中设置:
var outputPath = Path.GetDirectoryName(_textTransformation.Host.TemplateFile);
所以没有问题可以将此名称设置为BusinessModel的名称。但这是做到这一点的方法吗?有没有更简单的方法来完成这项工作?我可以想象很多人都希望从DataLayer中分离BusinessModel。
提前致谢,祝你晚安!
的Matthias
答案 0 :(得分:0)
简化您的要求:根据项目A中定义的实体模型生成文件到项目B中。
这里看起来你的主要问题是你的T4模板文件在项目A中。
简单的解决方案是将您的T4文件移动到项目B中,更新.edmx文件的路径(或者如果您首先使用EF代码,更新程序集引用)以指向EF源的物理路径项目A.
提示:如果可以,请使用相对路径,但完全限定路径也可以使用。
问题:您正在使用的.ttinclude旨在生成与模板文件位于同一文件夹路径中的文件,在VS解决方案资源管理器中,生成的文件将嵌套在模板文件下。
你可以修改ttinclude文件,但是你过度复杂了。