我正在构建一个 Silverlight MVVM 模板,并且遇到了 WCF 服务返回和实体对象。
这是我所做的:
- 在服务器端使用实体框架
- 创建了一个带有几个表的小型测试数据库。
- 在服务器端创建了 WCF 服务
- 然后我创建了一个返回整数的小测试方法。
- 在我的客户端,我添加了一个服务引用,并且我在完成的方法中成功收到了整数结果
- 然后更改了我的测试服务方法以返回一个“Person”对象(这是来自实体框架的实体)
- 更新了我的服务参考,然后它不起作用!
- 然后我将返回类型返回到任何基本 CLR 类型,它再次工作
我检查了 Fiddler,在我的服务响应中收到以下504错误:
HTTP/1.1 504 Fiddler - 接收失败 Content-Type: text/html; charset=UTF-8 连接:关闭时间戳:08:56:23.783
[Fiddler] ReadResponse() 失败:服务器没有返回对此请求的响应。
在试图弄清楚这一点后,我遇到了WCF Trace Logging并发现了这个错误:
There was an error while trying to serialize parameter :BasicResult. The InnerException message was 'Type 'MVVMProject.Web.DataSource.Person' with data contract name 'Person:http://schemas.datacontract.org/2004/07/MVVMProject.Web.DataSource' is not expected. Consider using a DataContractResolver or add any types not known statically to the list of known types - for example, by using the KnownTypeAttribute attribute or by adding them to the list of known types passed to DataContractSerializer.'. Please see InnerException for more details.
我不明白为什么这么难?我必须在我的实体上设置一些属性以使其可序列化吗?如果我查看 Entity Framework 的 Designer.cs 文件,我会在 Entity 上看到一个 Serializable 属性。当然这意味着我可以通过 WCF 服务传递它???我不明白这个错误,不幸的是......
甚至可以将实体框架与 WCF 服务一起使用吗?
任何帮助将不胜感激。