Wcf 服务器和实体框架问题
Posted
技术标签:
【中文标题】Wcf 服务器和实体框架问题【英文标题】:Wcf server & Entity Framework problems 【发布时间】:2014-03-30 23:40:21 【问题描述】:当我知道使用集成库无法做到这一点时,我一直在尝试使用 ef 实体作为源从 wcf restful 服务返回 json 响应。因此,经过一些 3rd 方库谷歌搜索后,我开始了解 Json.net 库,它能够处理 EF 实体。到目前为止一切都很好,图书馆工作并完美地完成了它的工作。但是后来我遇到了重新序列化之前使用 Json.net 库序列化的对象的问题,因为当我返回它时,Visual Studio 集成库再次序列化,所以我不断在输出中得到一些格式错误的 json,其中包含一些反斜杠( \ )。最后我找到了一种方法来返回序列化的json字符串,避免第二次序列化,方法如下:
public Message GetProblems()
using (MojDBEntities context = new MojDBEntities())
//not a good solution, but ok, till I find a better one
context.ContextOptions.LazyLoadingEnabled = false;
var temp = context.Problems.ToList();
var serializedObject = JsonConvert.SerializeObject(temp);
return WebOperationContext.Current.CreateTextResponse (serializedObject,
"application/json; charset=utf-8",
Encoding.UTF8);
它有效。问题是我不想只返回实际的 json 数据,还有另一个名为 status 的字段,它会告诉我响应是否正确完成(例如 status = 0 表示正常,所以我可以继续获取实际的 json 数据)。 如何做到这一点?
【问题讨论】:
【参考方案1】:这样的?
var response = new
status = 0,
data = temp
;
var serializedObject = JsonConvert.SerializeObject(response);
return WebOperationContext.Current.CreateTextResponse(serializedObject);
但您应该依赖 HTTP 获取状态代码,而不是响应消息本身。
【讨论】:
做到了,谢谢。我被要求从我在服务中的所有方法中产生一种“统一响应”,我想到了这样的事情。您能否建议我如何在我的案例中涉及 http 状态代码检查? 我看不到您要执行的操作,但您可以考虑返回 HTTP 错误(如409 Conflict
如果适用)。
我正在构建一个安静的 wcf 服务,稍后我将从 android 客户端使用它。以上是关于Wcf 服务器和实体框架问题的主要内容,如果未能解决你的问题,请参考以下文章