0

我有两个具有不同数据库模型的项目(尽管相同的实体框架版本 5.0.0)。

他们的查询如下所示:

项目一:

if (_db.Entry(customer).State == EntityState.Detached)

项目二:

if (customer.EntityState == EntityState.Detached)

这些是差异,以及其他小事。

我如何知道每个项目正在使用哪个版本的实体框架(当 DLL 版本匹配时)?将“旧”版本更新为“新”模型版本是否有意义?有什么好处?

4

1 回答 1

1

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

项目 2 最有可能与从那里ObjectContext派生EntityObjectCustomer继承的实体一起使用EntityState。如果Customer有自定义EntityState属性,则无法用您的单行进行区分。按 F12 两次 - 一次在customer指向声明的变量上,然后在该Customer变量的类型(可能)上查看类声明并检查它是否派生自EntityObject.

引用项目 2 中的 EF5 程序集这一事实毫无意义。它可能未在代码中使用,或者代码仅使用了一些辅助方法(如 lambda 版本Include),但似乎并未使用DbContext. 它将引用 .NET 框架程序集(System.Data.Entity.dll等)中的 EF 类。

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

于 2013-04-15T19:20:46.997 回答