【问题标题】:Entity framework Handle procedure returning Json实体框架句柄过程返回 Json
【发布时间】:2017-12-29 13:16:44
【问题描述】:

我的存储过程以 json 格式返回数据。 例如。

{
  "StoryData": [
    {
      "UserStoryId": 141204
     }]
}

如何从 Entity frameworkside 获取 json 格式?

我试过了:-

using (MyWizard_ARA_AppEntities context = new MyWizard_ARA_AppEntities())
                {
                    log.Info("Database connected successfully");
                    log.Info("GET_AMBIGUITYANALYSIS_RESULT procedure called");                    
                    return context.GET_AMBIGUITYANALYSIS_RESULT().ToArray();
                }

但它没有给我正确的结果。

请帮忙。

编辑:-

 public virtual ObjectResult<string> GET_AMBIGUITYANALYSIS_RESULT()
        {
            return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<string>("GET_AMBIGUITYANALYSIS_RESULT");
        }

【问题讨论】:

  • 没有给我正确的结果。 - 它给了你什么结果?你期待什么?如果它返回一个字符串(即 json 是什么)并且您想要一个对象,那么您将需要在检索它之后反序列化它。
  • 我期待 json 因为我从我的示例中展示的存储过程接收到
  • 这不能回答问题 - 你现在得到了什么

标签: c# .net json entity-framework


【解决方案1】:

你应该反序列化从GET_AMBIGUITYANALYSIS_RESULT过程返回的json结果到对象;

using (MyWizard_ARA_AppEntities context = new MyWizard_ARA_AppEntities())
{
    log.Info("Database connected successfully");
    log.Info("GET_AMBIGUITYANALYSIS_RESULT procedure called");
    var result = JsonConvert.DeserializeObject<Ambiguityanalysis>(context.GET_AMBIGUITYANALYSIS_RESULT());
    return result;
}

public class StoryData
{
    public int UserStoryId { get; set; }
}

public class Ambiguityanalysis
{
    public List<StoryData> StoryData { get; set; }
}

【讨论】:

  • 为了迂腐,您不是“返回 json 结果”,而是返回 Ambiguityanalytsis 类型的对象,但我怀疑这实际上是 OP 真正想要的。
  • 无法将 objectresult 转换为字符串
  • "GET_AMBIGUITYANALYSIS_RESULT()" 方法不直接将 json 结果作为字符串返回?您应该在方法中使用 SingleOrDefault 从过程结果中仅检索单个项目。
猜你喜欢
  • 2012-11-24
  • 2012-05-07
  • 1970-01-01
  • 1970-01-01
  • 2015-05-14
  • 1970-01-01
  • 1970-01-01
  • 2011-05-18
  • 1970-01-01
相关资源
最近更新 更多