实体框架 6.1 的代码优先工作流的 T4 模板



我喜欢在代码优先工作流中自定义实体框架 6.1 使用的 T4 模板。

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

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

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

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

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

感谢您的帮助!

山 姆

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

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

山 姆

Microsoft这样写的,你每次都必须生成一个新模型。这是一种痛苦。我们最终有一个项目,从我们将文件复制到具有适当文件夹结构的最终项目中生成。我们还从一个数据库生成多个上下文。

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

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

Add-Migration <name-goes-here>

要执行您的更改,请使用

Update-Database -Verbose

若要使模型与数据访问层分开,可能需要指定连接字符串(指向项目中的正确文件夹):

这可能会对您有所帮助。 实体框架 6 (EF6) 使用单独项目中的模型进行代码首次迁移

最新更新