在Visual Studio中添加新数据项时,EF 6.x DbContext Generator选项的用途

fre*_*hie 61 c# linq asp.net entity-framework linq-to-sql

我有一个使用LINQ to SQL构建的Web应用程序,我希望将其升级到LINQ to Entity Framework.我已经看了一些教程,我学到的是基本上在数据库优先的场景中,你创建了一个ADO.NET实体数据模型.从那里,您可以选择要包含在模型中的表(非常类似于LINQ to SQL).

Add New Item对话框中,我看到有另一个选项可以创建EF 6.x DbContext Generator:

Visual Studio

ADO.NET实体数据模型(对话框中的第一个选项)相比,EF 6.x DbContext Generator的用途是什么?而且,什么是EF 6.x DbContext Generator?它似乎创建了一个文本文件.我该怎么办?

Wil*_*ith 16

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

DbContext Generator创建两个文件 -

  1. 使用连接字符串详细信息和每个表的DbSet创建DbContext.

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

有关演练,请访问http://msdn.microsoft.com/en-US/data/jj206878


brd*_*uca 12

如果您已经有了数据库,那么第一个选项会更好,因为该方法与您在LinqToSQL中使用的方法非常相似..EDMX文件还可以为您提供数据库的图形可视化,您不必担心其他任何问题.

  • 就像有人问这个答案,这个答案不能解释一个目的与另一个目的的比较:( (2认同)
  • 答案没有回答 OP 的问题。问题是:*“与 ADO.NET 实体数据模型(对话框中的第一个选项)相比,EF 6.x DbContext Generator 的目的是什么?EF 6.x DbContext Generator 的用途是什么?”*。答案与原始问题没有任何关系 - 因此投反对票。就像有人说*“喝水比喝苏打水有什么好处?”*。然后有人回复**“苏打水是咖啡因的良好来源”**。谢谢,但这并没有真正的帮助。只有我的两分钱。 (2认同)

Bro*_*nek 12

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

MSDN文章

以下是文章的介绍:

使用实体框架设计器创建模型时,将自动为您生成类和派生上下文.除了默认代码生成,我们还提供了许多模板,可用于自定义生成的代码.这些模板以T4文本模板的形式提供,允许您根据需要自定义模板.

通常,这些生成器不会将 db模块从LinqToSQL 转换为EntityFramework.
如果你有完整的数据库(假设你有它基于LINQ2SQL模块)我建议你使用ADO.NET实体数据模型(添加新项目:EDMX)(加入后VS向导),然后选择"从数据库生成" .


Eri*_*sch 6

有两种方法可以做DB First,一种涉及EDMX文件,另一种涉及逆向工程以编写第一个POCO.

如果有EDMX文件,则安装用于生成实体的生成器,并且有多个选项.一个是DbContext,另一个是EntityObject生成器,它基于ObjectContext生成对象.

  • @frenchie如果你问的是DbContext和ObjectContext之间的区别,它们就完全不同了.DbContext是两者中的较新者,并且允许您使用"普通旧C#对象".它被称为"DbContext"的原因是因为Context对象(有点像数据集)是DbContext类而不是ObjectContext类.您在EntityFramework中看到的大多数功能演示都涉及DbContext. (7认同)
  • DbContext和EntityObject生成器之间有什么区别? (3认同)