2011-02-23 105 views
1

我试用EF CodeFirst CTP 5,并将其与WCF数据服务一起使用。我得到一个错误Internal Server Error. The type 'System.Data.Entity.DynamicProxies.Person_C321D7A37002A1B42C3CBAECC27983D77F6B7FCC3F837175B2CBB55CCA66AF55' is not a complex type or an entity type.WCF +实体框架CodeFirst = DynamicProxies异常?

如果我使用由CF创建的数据库的edmx生成的人,我没有问题。在阅读中,似乎懒惰的加载正在搞砸了事情,而以前的EF版本让我可以用DbContext中没有的选项标志来关闭代理生成。有一种方法可以将LazyLoading设置为false,但这并不会关闭代理生成。

谢谢。

+0

你不能急于负载实体关系。 – 2011-02-23 20:31:49

+0

不,我不希望它加载它们,因为它是一个OData提要,它只是放弃链接到其他实体。我已经设置了LazyLoadingEnabled = false,所以它不是什么时候加载的问题。 – Paul 2011-02-23 20:34:37

回答

4

这里是您可以在EF代码首先CTP5做什么:

((IObjectContextAdapter)context).ObjectContext.ContextOptions.ProxyCreationEnabled = false; 

或者,这是WCF数据服务在VS 2010 RTM的错误。您可以使用修复了this issue的WCF数据服务的CTP1。

希望这会有所帮助。
感谢
PRATIK

+0

真棒,谢谢! – Paul 2011-02-25 22:15:37

+0

只是为了记录,CTP1安装没有*修复问题,但解决方案与投给IObjectContextAdapter没有,谢谢。 – Paul 2011-02-25 22:28:34

0

在CTP1,二进制文件已更名为Microsoft.Data.Services。*。dll的。你是否改变了对新组件的引用?我很确定这个问题在CTP1中得到了解决。所以只是想确保它对你有用。

感谢 PRATIK

+0

是的,我正在使用CTP 1 – Paul 2011-02-28 17:59:14

0

如果您使用的是新的DbContext类,则可以使用

Configuration.ProxyCreation = false 

要禁用动态代理创建