【发布时间】:2013-03-25 08:00:46
【问题描述】:
我正在构建一个 Silverlight MVVM 模板,并且遇到了 WCF 服务返回和实体对象。
这就是我所做的:
- 在服务器端使用实体框架
- 创建了一个包含几个表的小型测试数据库。
- 在服务器端创建了 WCF 服务
- 然后我创建了一个返回整数的小型测试方法。
- 在我的客户端,我添加了一个服务引用,我在完成的方法中成功收到了整数结果
- 然后更改我的测试服务方法以返回一个“Person”对象(它是来自 Entity Framework 的一个实体)
- 更新了我的服务参考,然后它不起作用!
- 然后我将返回类型返回到任何基本的 CLR 类型,它再次工作
我检查了 Fiddler,在我的服务响应中收到以下 504 错误:
HTTP/1.1 504 Fiddler - 接收失败 内容类型:文本/html;字符集=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 服务一起使用?
任何帮助将不胜感激。
【问题讨论】:
-
有人吗?我相信你们中的许多人都做过这样的事情!?!
标签: wcf silverlight entity-framework mvvm http-status-code-504