EntityFramework 6.1的Code First工作流程的T4模板

3

我想要定制Entity Framework 6.1中Code First工作流程所使用的T4模板。

我的MVC应用程序中有两个项目,一个是数据访问(DAL)的,另一个是领域实体(Model)的。我在DAL项目中使用“来自数据库的Code First”实体数据模型向导来生成上下文和POCOs。

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

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

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

由于缺乏文档,我很难对EF中使用的这些T4模板进行定制。

谢谢您的帮助!

Sam


你必须创建一个新的。 - stink
3个回答

1
我选择了非OOB解决方案,依靠 "EntityFramework Reverse POCO Generator" 扩展。在我看来,这比OOB向导要好得多,而OOB向导则很糟糕,而Power Tools的beta版也不理想。
感谢所有人的意见,并同意我对MS的OOB向导需要重新思考的看法。
Sam

0
关于模型的更改,由于采用了代码优先方法,这意味着您的模型驱动整个过程。因此,您可以随意更改模型,只需在包管理器控制台中使用以下命令生成相应的代码,即可相应地更改数据库。
Add-Migration <name-goes-here>

执行您的更改,请使用以下命令

Update-Database -Verbose

为了让您的模型与数据访问层分离,您可能需要指定一个连接字符串(指向项目中正确的文件夹):
这可能会对您有所帮助。使用独立项目中的模型进行实体框架6(EF6)代码优先迁移

0

微软的设计是每次都需要生成一个新模型,这真的很麻烦。我们最终采用了一个生成项目,将文件复制到具有适当文件夹结构的最终项目中。

我们还从一个数据库生成多个上下文。

习惯使用T4模板需要一些时间,但经过一些实践后,它们变得非常直观。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接