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 服务器和实体框架问题的主要内容,如果未能解决你的问题,请参考以下文章

WCF 数据服务或实体框架

使用 WCF 和实体框架的客户端服务器

将 WCF 服务与实体框架 4 和...DTO 一起使用?

实体框架数据未使用 Wcf 服务保存或更新

Ninject 和 WCF Web 服务使实体框架变慢

WCF 数据服务,序列化实体框架部分类的附加属性