调试实体框架DBContext API映射

时间:2011-10-28 18:34:23

标签: entity-framework-4.1 data-annotations

美好的一天,

我使用Entity Framework将一些预先存在的Business Objects映射到我们的数据库。这些对象最初使用的是本地数据访问方法,但我们现在想要使用Code-First来试用Entity Framework。我的期望是这很简单,但现在我有些疑惑。

我试图只使用属性来完成这个,所以我在这里没有一些映射,其中有一些映射,还有更多的映射....

当我查询实体时,我得到System.Data.Entity.DynamicProxies.MyClass_23A498C7987EFFF2345908623DC45345和类似的对象。这些对象具有来自相关记录的数据以及相关对象(尽管那些也是DynamicProxies)。

这里发生了什么?我的映射出了什么问题?为什么不改回MyBusinessObject.MyClass?

1 个答案:

答案 0 :(得分:3)

这与映射无关。您看到的那些类型称为动态代理。 EF在运行时从您映射的每种类型派生类,并使用它而不是您的类型。这些类在overriden属性setter和getter中有一些额外的内部逻辑。延迟加载和附加实体的动态变化跟踪需要逻辑。

可以在上下文实例中关闭此行为:

context.Configuration.ProxyCreationEnabled = false;

执行此操作后,您的导航属性将不会自动加载,您必须在查询中使用预先加载(Include方法)或显式加载。