为什么实体框架代码首先改变我的类型名称

本文关键字:我的 类型 改变 实体 框架 代码 为什么 | 更新日期: 2023-09-27 18:07:07

我使用EF 4.1 Power Toys生成了一堆类来逆向工程我的数据库。我的类和映射看起来很好,工作也很好,但是当我检查返回的类型的名称时,似乎EF已经向类型名称添加了GUID。所以这个方法的主体是:

var context = new DbContext();
var myVehicle = context.Vehicles.First();
return myVehicle.GetType().Name;

…将返回如下内容:

"Vehicle_F31E8AC6EB21A3220F761E7C2FFEB3B433CEFC7CF567E9A0CF53E8F4B598C2B9"

为什么会这样,有没有办法把它关掉?

为什么实体框架代码首先改变我的类型名称

这就是动态代理。当您第一次从实体框架中查询类型时,它将动态地创建派生自您的实体类型的类并返回它。您看到的名称是该派生类的名称。

实体框架这样做的原因是为了支持一些高级特性,如延迟加载或动态更改跟踪。可以通过调用

来关闭它。
context.Configuration.ProxyCreationEnabled = false;