【问题标题】:BreezeJs Ef Core migration problemsBreezeJs Ef Core 迁移问题
【发布时间】:2018-06-19 23:05:56
【问题描述】:

最近我们将后端 Web api 从 .Net 4.61 升级到 .Net Core 2.0, 我们正在使用 Breezejs,我们对此很满意, 升级后我们遇到了两个在线找不到答案的问题:

使用 did 升级所有内容是:

我们使用这个 git 作为指导:https://github.com/mikemichaelis/dnc/

但要总结一下:

  1. 使用 .Net 标准库项目和 Scaffold-DbContext(包含所有需要的依赖项)

  2. 使用 Breeze 和 Ef Core 依赖项创建一个 .Net Core 2.0 WebApi 项目

  3. 将旧控制器迁移到新项目并删除错误

所以这是第一个问题: 对于只返回实体的 List 方法,它工作正常

但对于返回单个 Object 的方法,它给出:

    [HttpGet]
    public Choice ChoiceByID(int ID)
    {
        var result = this.PersistenceManager.Context.Choice
            .SingleOrDefault(n => n.ID == ID);
        return result;
    }

breeze error 错误:无法将此端点转换为 IQueryable

如果我们更改代码以返回 IQueryable:

    [HttpGet]
    public IQueryable<Choice> ChoiceByID(int ID)
    {
        var result = this.PersistenceManager.Context.Choice
            .Where(n => n.ID == ID);
        return result;
    }

它会给予:

breeze 错误错误:此 EntityQuery ctor 需要有效的 json 细绳。以下不是json

到目前为止还没有解决问题的运气

【问题讨论】:

  • 如果你调试,你看到result变量上的选择了吗?
  • 是的,在这两个例子中,服务器上的结果被填充并且方法被正确执行

标签: c# asp.net-core breeze ef-core-2.0


【解决方案1】:

经过一番挖掘和克隆微风 git,我发现了问题所在 efcore 似乎轻而易举地改变了你应该如何称呼你的端点:

以前第一个参数不存在(或者我没有使用它)

所以解决问题:

  1. 按照@Nkosi 提供的方式更改您的控制器

  2. 在您的客户端中,添加以下行(在您的构造函数中):

    从'breeze-client'导入*作为微风; //在顶部导入

    breeze.config.initializeAdapterInstance('uriBuilder', 'json') // 添加到你的构造函数中

【讨论】:

    【解决方案2】:

    由于迁移到 .net 核心,请考虑为您的控制器操作遵循建议的语法结构以避免任何不可预见的问题。

    [HttpGet]
    public IActionResult ChoiceByID(int ID) {
        var result = this.PersistenceManager.Context.Choice
            .SingleOrDefault(n => n.ID == ID);
    
        if(result == null)
            return NotFound() 
    
        Ok(new List<Choice>() { result });
    }
    

    或者对于第二个例子

    [HttpGet]
    public IActionResult ChoiceByID(int ID) {
        var result = this.PersistenceManager.Context.Choice
            .Where(n => n.ID == ID).ToList();
    
        if(result.Any())
            return Ok(result);
    
        return NotFound();
    }
    

    【讨论】:

    • 很抱歉,但没有解决问题,似乎它比 efcore 或 netcore 更容易出错(或者我在这里遗漏了一些东西)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-15
    • 1970-01-01
    • 1970-01-01
    • 2021-11-23
    • 2019-10-08
    • 2021-05-15
    相关资源
    最近更新 更多