我喜欢在Code First工作流程中自定义Entity Framework 6.1使用的T4模板。
我的MVC应用程序中有2个项目,一个用于数据访问(DAL),另一个用于域实体(模型)。 我在DAL项目中使用“数据库中的代码优先”实体数据模型向导来生成上下文和POCO。
但是,我想自定义T4模板,以便它在Model项目中生成数据对象,并让DbContext位于DAL项目(Separation of Concerns)中。所以我安装了EntityFramework.CodeTemplates.CSharp NuGet包(http://msdn.microsoft.com/en-US/data/dn753860)。
如果它不可行,我想自定义T4模板,以便我可以将域对象存储在单独的文件夹中。
让我感到惊讶的第二件事是,如果我的数据库发生变化,我该如何重新设计我的模型?我是否每次都需要添加新模型?
由于缺少文档,我很难在CodeFirst中自定义EF使用的这些T4模板。
感谢您的帮助!
萨姆
答案 0 :(得分:1)
我依靠“EntityFramework Reverse POCO Generator”扩展程序选择了非OOB解决方案。这个恕我直言,比OOB向导更好,它很糟糕和测试版的电动工具。
感谢所有意见,并同意我的观点,即OOB向导需要MS重新思考。
萨姆
答案 1 :(得分:0)
微软已经这么写了,你必须每次都生成一个新的模型。这是一种痛苦。我们最终创建了一个用于生成的项目,我们将文件复制到具有适当文件夹结构的最终项目。 我们还从一个数据库生成了几个上下文。
习惯T4模板需要时间,但经过一些练习后,它们非常简单。
答案 2 :(得分:0)
关于模型的变化,因为它是代码第一种方法,这意味着你的模型正在驱动整个事物。因此,您可以根据需要多次更改模型,只需在包管理器控制台中使用以下命令,即可生成相应更改数据库的代码
Add-Migration <name-goes-here>
要执行更改,请使用
Update-Database -Verbose
要使模型与数据访问层分离,您可能必须指定连接字符串(指向项目中的正确文件夹):
这可能会对你有所帮助。 Entity Framework 6 (EF6) code first migrations with models in separate project