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两个文件 –
-
创build带有连接string细节的DbContext和每个表的DbSet。
-
创build代表每个表的类。 如果您打开这些.tt文件夹,您将看到DbContext和类生成。 您不需要对这些类进行任何操作 – 您可以在Controller操作中引用它们。
有两种方法来做数据库首先,一个涉及一个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提供的最大灵活性和他们的惯例。
- 将自定义标题添加到Web API中的所有响应
- 错误Microsoft.Web.Infrastructure,版本= 1.0.0.0,文化=中立,PublicKeyToken = 31bf3856ad364e35
- AntiXss.HtmlEncode和HttpUtility.HtmlEncode有什么区别?
- 如何configurationELMAH以使用Windows Azure? 我在Elmah.axd上得到了一个404
- “&”字符会破坏存储在web.config中的密码
- 商店列表会话
- 我怎样才能得到网站的baseurl?
- 如何configurationWeb Api 2在单独的项目中查找控制器? (就像我在Web Api中所做的那样)
- MVC Razor视图嵌套的foreach的模型