我已经开始处理一个新项目,并从LinqToSQL
切换到EF 4.1作为我的ORM。
我已经有一个数据库设置可以使用,所以我将采用数据库第一种方法。默认情况下,EF会生成一个扩展ObjectContext
的上下文。我想知道一个好的方法是用DbContext
替换它。
大多数可用的示例仅涉及Code First和DbContext
,但DBContext
也可以与Database First一起使用。使用DBContext有什么好处吗?根据我的阅读,DBContext是ObjectContext的简化版本,使其更易于使用。还有其他优点或缺点吗?
答案 0 :(得分:3)
您不会手动更换任何东西。您需要在VS Gallery中使用DbContext
T4生成器。请勿触摸自动生成的文件 - 每次修改EDMX文件时,您的更改都将丢失。
我去年回答similar question。现在我的答案主要是 - 对于新用户,DbContext API可能更好。 DbContext API在使用和功能方面都得到了简化,但您仍然可以从ObjectContext
获取DbContext
并使用仅在ObjectContext API中可用的功能。另一方面,DbContext API具有一些额外的性能影响和额外的错误层。在简单的项目中,您可能在DbContext API中找不到任何缺点 - 您不会看到性能影响,您将不会使用仅在ObjectContext中可用的角落功能,并且您不会受到偶尔的错误的影响。
自DbContext API发布以来,收集了大量信息和博客文章,因此您不必担心您将找不到API的描述。此外,ADO.NET团队现在使用DbContext API作为他们的旗舰。
我不是DbContext API的忠实粉丝,但我的观点与其功能无关,但与其存在无关 - 不需要两个API和ADO.NET团队的分离开发能力来维护和修复两个API做同样的事。这只意味着实现新功能的能力较低。
答案 1 :(得分:1)
我现在正在使用它来添加现有应用程序。 Ladislav所指的简化对我来说在这个项目中运作良好,因为我的时间和资源都很短。只要你坚持使用简单的CRUD操作并且不到约150个表,我就没有发现任何问题。
您仍然可以使用元数据注释来提供基本的验证和本地化,并且有足够的文档,但您在Microsoft官方网站上找不到太多。