如何判断我是否使用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版本匹配)每个项目正在使用?把"旧"版本升级到"新"版本有意义吗?有什么好处?

如何判断我是否使用ObjectContext API或DbContext API

项目1使用DbContext API,因为只有这个上下文类型有Entry方法。

项目2很可能使用ObjectContextEntityObject派生的实体,而Customer继承了EntityState。如果Customer具有自定义EntityState属性,则无法用单行进行区分。按两次F12——一次是在指向声明的customer变量上,然后是在该变量的类型(可能是Customer)上,以查看类声明并检查它是否派生自EntityObject

项目2中EF5程序集被引用的事实没有任何意义。它可能在代码中未被使用,或者代码只使用了几个助手方法(如Include的lambda版本),但它似乎没有使用DbContext的所有核心特性。它将引用。net框架程序集(System.Data.Entity.dll等)中的EF类。

升级项目2是值得考虑的,因为所有更新的EF开发都遵循POCO方法(而不是EntityObject方法)。