Entity framework 为什么我的poco实体不是';你不是代理人吗?

Entity framework 为什么我的poco实体不是';你不是代理人吗?,entity-framework,poco,entity-framework-ctp5,proxy-classes,Entity Framework,Poco,Entity Framework Ctp5,Proxy Classes,我无法找出我的实体奇怪行为的原因。 我正在使用从数据库生成的POCO类以及CTP5引入的dbContext模板。 在我的DbContext中,我有几个实体,当我使用它们时,它们是除一个之外的代理。此实体与其他实体一样生成,它只有3个简单属性。 我发现一个线程相关,但我所有的实体都添加了新的关键字,我从未对任何对象使用CreateObject Customer customer = new Customer(); customer.ID = "ID"; customer .Name = "Name

我无法找出我的实体奇怪行为的原因。 我正在使用从数据库生成的POCO类以及CTP5引入的dbContext模板。 在我的DbContext中,我有几个实体,当我使用它们时,它们是除一个之外的代理。此实体与其他实体一样生成,它只有3个简单属性。 我发现一个线程相关,但我所有的实体都添加了新的关键字,我从未对任何对象使用CreateObject

Customer customer = new Customer();
customer.ID = "ID";
customer .Name = "Name";
repository.add(customer);
repository.Save();
为什么只是它不是代理? 我还检查了此处定义的作为代理的要求,以及我应该在实体模型中定义的属性,所有这些都遵循指导原则。
感谢阅读ADO.NET博客,我发现了一篇文章,他们说:“如果实体类型是密封的和/或没有虚拟属性,那么Create将只创建实体类型的实例”,所以我认为这就是为什么我的实体(只有简单属性)不是代理的原因。如果我错了,我很欣赏别人的观点。

对于“简单属性”,你指的是标量属性(int、string、double等),而不是导航属性,对吗?这些属性是虚拟的吗?如果没有,我认为这确实是你没有得到代理对象的原因。只需将你的财产虚拟化即可解决问题。是的,你做到了!我指的是标量性质。不,这些属性不是虚拟的,但是为什么DbContext POCO生成器只对导航属性或复杂(对象)属性进行虚拟?你认为这是正确的,把标量属性保留为非虚?没有必要让他们作为代理,我想知道是否最好让他们作为代理。谢谢