如何判断我是否使用ObjectContext API或DbContext API
本文关键字:API ObjectContext 是否 DbContext 何判断 判断 | 更新日期: 2023-09-27 18:09:29
我有两个项目不同的数据库模型(虽然相同的实体框架版本5.0.0)。
它们的查询如下所示:
项目1:if (_db.Entry(customer).State == EntityState.Detached)
项目2:if (customer.EntityState == EntityState.Detached)
这些是不同之处,以及其他一些小的地方。
我怎么能告诉哪个版本的实体框架(当DLL版本匹配)每个项目正在使用?把"旧"版本升级到"新"版本有意义吗?有什么好处?
项目1使用DbContext
API,因为只有这个上下文类型有Entry
方法。
项目2很可能使用ObjectContext
和EntityObject
派生的实体,而Customer
继承了EntityState
。如果Customer
具有自定义EntityState
属性,则无法用单行进行区分。按两次F12——一次是在指向声明的customer
变量上,然后是在该变量的类型(可能是Customer
)上,以查看类声明并检查它是否派生自EntityObject
。
项目2中EF5程序集被引用的事实没有任何意义。它可能在代码中未被使用,或者代码只使用了几个助手方法(如Include
的lambda版本),但它似乎没有使用DbContext
的所有核心特性。它将引用。net框架程序集(System.Data.Entity.dll
等)中的EF类。
升级项目2是值得考虑的,因为所有更新的EF开发都遵循POCO方法(而不是EntityObject
方法)。