2011-08-31 64 views
3

我生成了一堆使用EF 4.1 Power Toys的类来逆向工程我的数据库。我的类和地图看起来不错并且工作得很好,但是当我检查返回的类型的名称时,看起来EF已经为类型名称添加了一个GUID。所以用这个方法对于身体:为什么实体框架代码首先更改我的类型名称?

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

...将返回类似:

"Vehicle_F31E8AC6EB21A3220F761E7C2FFEB3B433CEFC7CF567E9A0CF53E8F4B598C2B9" 

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

+0

如果您调用构造函数,您确定会发生这种情况吗?我不这么认为,如果你从上下文中查询实体,它会发生。 –

+0

这是正确的。我复制了错误的行。原始帖子已更新。 –

回答

5

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

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

context.Configuration.ProxyCreationEnabled = false; 
相关问题