Entity framework 在EF4.1中首先使用DbContext和数据库

Entity framework 在EF4.1中首先使用DbContext和数据库,entity-framework,orm,entity-framework-4,dbcontext,objectcontext,Entity Framework,Orm,Entity Framework 4,Dbcontext,Objectcontext,我已经开始从事一个新项目,并且正在从LinqToSQL切换到EF4.1作为我的ORM 我已经建立了一个数据库来使用,所以我将采用数据库优先的方法。默认情况下,EF生成一个扩展ObjectContext的上下文。我想知道一个好的方法是用DbContext替换它 大多数可用示例只处理代码优先和DbContext,但是DbContext也可以首先用于数据库。使用DBContext有什么好处吗?据我所知,DBContext是ObjectContext的简化版本,使其更易于使用。还有其他优点或缺点吗?您不

我已经开始从事一个新项目,并且正在从
LinqToSQL
切换到EF4.1作为我的ORM

我已经建立了一个数据库来使用,所以我将采用数据库优先的方法。默认情况下,EF生成一个扩展
ObjectContext
的上下文。我想知道一个好的方法是用
DbContext
替换它


大多数可用示例只处理代码优先和DbContext,但是DbContext也可以首先用于数据库。使用DBContext有什么好处吗?据我所知,DBContext是ObjectContext的简化版本,使其更易于使用。还有其他优点或缺点吗?

您不会手动更换任何东西。您需要VS Gallery提供的
DbContext
T4生成器。不要触摸自动生成的文件-每次修改EDMX文件时,您所做的更改都将丢失

我去年回答了。现在我的答案是——对于新用户来说,DbContext API可能更好。DbContext API在用法和功能方面都得到了简化,但您仍然可以从
DbContext
获取
ObjectContext
,并使用仅在ObjectContext API中可用的功能。另一方面,DbContext API还有一些额外的性能影响和额外的bug层。在简单的项目中,您可能不会在DbContext API中发现任何缺点—您不会看到性能影响,您不会使用仅在ObjectContext中可用的角点功能,并且不会受到偶然错误的影响

自从DbContext API发布以来,收集了大量信息和博客文章,所以您不必担心找不到API的描述。另外,ADO.NET团队现在使用DbContext API作为他们的旗舰


我不是DbContext API的忠实粉丝,但我的观点与它的功能无关,而是与它的存在有关——不需要有两个API,也不需要ADO.NET团队的开发能力来维护和修复两个API。这只意味着实现真正新功能的容量减少。

您不会手动替换任何内容。您需要VS Gallery提供的
DbContext
T4生成器。不要触摸自动生成的文件-每次修改EDMX文件时,您所做的更改都将丢失

我去年回答了。现在我的答案是——对于新用户来说,DbContext API可能更好。DbContext API在用法和功能方面都得到了简化,但您仍然可以从
DbContext
获取
ObjectContext
,并使用仅在ObjectContext API中可用的功能。另一方面,DbContext API还有一些额外的性能影响和额外的bug层。在简单的项目中,您可能不会在DbContext API中发现任何缺点—您不会看到性能影响,您不会使用仅在ObjectContext中可用的角点功能,并且不会受到偶然错误的影响

自从DbContext API发布以来,收集了大量信息和博客文章,所以您不必担心找不到API的描述。另外,ADO.NET团队现在使用DbContext API作为他们的旗舰


我不是DbContext API的忠实粉丝,但我的观点与它的功能无关,而是与它的存在有关——不需要有两个API,也不需要ADO.NET团队的开发能力来维护和修复两个API。这只意味着用于实现真正新功能的容量减少。

我现在将它与Oracle一起用于现有应用程序的附加组件。Ladislav提到的简化对我来说在这个项目上很有效,因为我在时间和资源上都很短缺。只要您坚持简单的CRUD操作和少于150个表,我就没有发现任何问题


您仍然可以使用元数据注释来提供基本的验证和本地化,虽然有足够的文档,但在Microsoft官方网站上找不到太多文档。

我现在将其与Oracle一起用于现有应用程序的附加组件。Ladislav提到的简化对我来说在这个项目上很有效,因为我在时间和资源上都很短缺。只要您坚持简单的CRUD操作和少于150个表,我就没有发现任何问题


您仍然可以使用元数据注释来提供基本的验证和本地化,虽然有足够的文档,但在Microsoft官方网站上找不到太多。

您的链接有帮助。我还想知道,因为我已经创建了所有POCO类,我可以简单地使用DbContext生成器添加两个T4模板文件,删除POCO实体的模板文件,并使用我的POCO实体,而无需做很多工作。您可以,但您必须严格遵守创建POCO实体(命名约定)你的链接有帮助。我还想知道,因为我已经创建了所有POCO类,我可以简单地使用DbContext生成器添加两个T4模板文件,删除POCO实体的模板文件,并使用我的POCO实体,而无需做很多工作。您可以,但您必须严格遵守创建POCO实体(命名约定)