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

时间:2011-08-31 23:01:17

标签: c# entity-framework entity-framework-4.1

我使用EF 4.1 Power Toys生成了一堆类来对我的数据库进行逆向工程。我的类和地图看起来很好并且运行良好,但是当我检查返回的类型的名称时,似乎EF已经为类型名称添加了GUID。这是一个用于身体的方法:

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

...会返回类似的内容:

"Vehicle_F31E8AC6EB21A3220F761E7C2FFEB3B433CEFC7CF567E9A0CF53E8F4B598C2B9"

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

1 个答案:

答案 0 :(得分:5)

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

实体框架之所以这样做,是为了支持一些高级功能,如延迟加载或动态更改跟踪。可以通过调用它来关闭它:

context.Configuration.ProxyCreationEnabled = false;