EF 6.x DbContext生成器的用途

我有一个使用Linq-to-SQL构build的Web应用程序,我正在将它升级到Linq-to-EF。 我已经看了一些教程,基本上在数据库第一场景中,你创build一个ADO.NET实体数据模型,然后从那里select要包含在模型中的表(与linq-to-sql非常相似)。 现在在Add New Item窗口中,我看到还有另一个选项,包括创build一个EF 6.x DbContext生成器。 在这里输入图像说明

与创buildADO.NET实体数据模型(窗口的第一个选项)相比,DbContext生成器的目的是什么?DbContext生成器的用途是什么? 它似乎创build一个文本文件; 我该怎么办呢?

如果你已经有一个数据库,第一个select是更好的,因为这种方法是非常相似的,你已经在LinqToSQL工作。 .EDMX文件还可以为您提供数据库的graphics可视化,而且您不必担心其他任何事情。

我认为这是与EntityFramework和生成器相关的基本文章:

MSDN文章

这里是文章的介绍:

使用entity frameworkdevise器创build模型时,将自动为您生成类和派生上下文。 除了默认的代码生成之外,我们还提供了一些模板,可以用来自定义生成的代码。 这些模板作为T4文本模板提供,允许您在需要时自定义模板。

通常这些生成器不会将您的数据库模块从LinqToSQL 转换为EntityFramework。
如果你有完整的数据库(假设你把它作为一个基于Linq2SQL的模块),我build议你使用ADO.NET实体数据模型(添加新项目:EDMX),并select“从数据库生成”(VS向导添加后) 。

DbContext生成器用更简单和更短的代码replaceObjectContext来将Entity对象连接到数据库对象。 具有30个字段的单个数据库表由大约800行代码作为ObjectContext表示,但是大约40行易于理解的代码作为由DbContextGenerator生成的DbContext和类。

DbContext生成器创build两个文件 –

  1. 创build带有连接string细节的DbContext和每个表的DbSet。

  2. 创build代表每个表的类。 如果您打开这些.tt文件夹,您将看到DbContext和类生成。 您不需要对这些类进行任何操作 – 您可以在Controller操作中引用它们。

演练可在http://msdn.microsoft.com/en-US/data/jj206878获取;

有两种方法来做数据库首先,一个涉及一个EDMX文件,另一个涉及逆向工程来编写第一个POCO的。

当你有一个EDMX文件时,你会安装用于生成实体的生成器,并且有几个选项。 一个是DbContext,另一个是EntityObject生成器,它根据ObjectContext生成对象。

第一个选项创build一个Model-First文件来处理EF(所有版本),如果您select可以从现有数据库更新(或构build)您的EF-Model,而select第二个选项,您将获得生成工具对应的文件,以build立与Code-First EF一起工作的解决scheme。

根据我的经验,第二select不是一个有价值的select,如果您决定使用Code-First EF,强烈build议您打开一个干净的文件并自行编写代码,并享受Code-First提供的最大灵活性和他们的惯例。