在Visual Studio中添加新数据项时,EF 6.x DbContext Generator选项的用途
我有一个使用LINQ to SQL构建的Web应用程序,我希望将其升级到LINQ to Entity Framework。 我查看了一些教程,我学到的是基本上在数据库优先的场景中,您创建了一个ADO.NET实体数据模型。 从那里,您可以选择要包含在模型中的表(非常类似于LINQ to SQL)。
在Add New Item对话框中,我看到有另一个选项可以创建EF 6.x DbContext Generator :
与ADO.NET实体数据模型 (对话框中的第一个选项)相比, EF 6.x DbContext Generator的用途是什么? 而且,什么是EF 6.x DbContext Generator ? 它似乎创建了一个文本文件。 我该怎么办?
如果您已经有了数据库,那么第一个选项会更好,因为该方法与您在LinqToSQL中使用的方法非常相似。 .EDMX文件还可以为您提供数据库的图形可视化,您不必担心其他任何问题。
DbContext Generator用更简单和更短的代码替换ObjectContext,以将Entity对象连接到数据库对象。 具有30个字段的单个数据库表由作为ObjectContext的大约800行代码表示,但是作为由DbContextGenerator生成的DbContext和类大约40行易于理解的代码。
DbContext Generator创建两个文件 –
-
使用连接字符串详细信息和每个表的DbSet创建DbContext。
-
创建表示每个表的类。 如果打开这些.tt文件夹,您将看到生成的DbContext和类。 您无需对这些类执行任何操作 – 您可以在Controller操作中引用它们。
有关演练,请访问http://msdn.microsoft.com/en-US/data/jj206878
我认为这是与EntityFramework和生成器相关的基本文章:
MSDN文章
以下是文章的介绍:
使用entity framework设计器创建模型时,将自动为您生成类和派生上下文。 除了默认代码生成之外,我们还提供了许多模板,可用于自定义生成的代码。 这些模板以T4文本模板的forms提供,允许您根据需要自定义模板。
通常, 这些生成器不会将 db模块从LinqToSQL 转换为EntityFramework。
如果您有完整的数据库(假设您将其作为基于Linq2SQL的模块)我建议您使用ADO.NET实体数据模型(添加新项目:EDMX)并选择“从数据库生成”(添加后的VS向导) 。
有两种方法可以做DB First,一种涉及EDMX文件,另一种涉及逆向工程以编写第一个POCO。
如果有EDMX文件,则安装用于生成实体的生成器,并且有多个选项。 一个是DbContext,另一个是EntityObject生成器,它基于ObjectContext生成对象。
第一个选项创建一个模型优先文件以使用EF(所有版本),如果您选择可以从现有数据库更新(或构造)您的EF模型,而如果选择第二个选项,您将获得生成设施相应的文件,以构建使用Code-First EF的解决方案。
根据我的经验,第二个选择不是一个值得选择的选项,如果您决定使用Code-First EF,强烈建议您打开一个干净的文件并自由编写代码并享受Code-First提供的最大灵活性和他们的惯例。