EntityFramework 6.1 的代码优先工作流的 T4 模板

T4 template for Code First Workflow of EntityFramework 6.1

我喜欢在 Code First 工作流程中自定义 Entity Framework 6.1 使用的 T4 模板。

我的 MVC 应用程序中有 2 个项目,一个用于数据访问 (DAL),另一个用于域实体(模型)。 我在 DAL 项目中使用 "Code First from database" 实体数据模型向导来生成上下文和 POCO。

但是,我想自定义T4 模板,使其在Model 项目中生成数据对象,并让DbContext 位于DAL 项目中(关注点分离)。所以我安装了 EntityFramework.CodeTemplates.CSharp NuGet 包 (http://msdn.microsoft.com/en-US/data/dn753860).

如果不可行,我想自定义 T4 模板,以便我可以将域对象存储在单独的文件夹中。

第二件让我吃惊的事情是,如果我的数据库发生变化,我该如何重新设计我的模型?每次都需要添加新模型吗?

由于缺少文档,我很难自定义 EF 在 CodeFirst 中使用的这些 T4 模板。

感谢您的帮助!

山姆

微软是这么写的,每次都要生成一个新模型。这很痛苦。我们最终得到了一个生成项目,我们将文件复制到具有适当文件夹结构的最终项目。 我们还从一个数据库生成多个上下文。

习惯 T4 模板需要时间,但经过一些练习后它们非常简单。

关于模型的变化,因为它是代码优先方法,这意味着您的模型正在推动整个过程。因此,您可以根据需要多次更改模型,只需在包管理器控制台中使用以下命令,即可生成相应更改数据库的代码

Add-Migration <name-goes-here>

并执行您的更改使用

Update-Database -Verbose

要将您的模型与数据访问层分开,您可能必须指定一个连接字符串(它指向您项目中的正确文件夹):

这可能对您有所帮助。 Entity Framework 6 (EF6) code first migrations with models in separate project

我依靠“EntityFramework Reverse POCO Generator”扩展选择了非 OOB 解决方案。这个恕我直言,比糟糕的 OOB 向导和测试版的电动工具要好得多。

感谢所有意见并同意我的意见,即 OOB 向导需要 MS 重新考虑。

山姆