BreezeJs Ef核心迁移问题

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

用do进行升级的方法是:

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

但是要总结一下:

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

  2. 创建具有Breeze和Ef Core依赖关系的.Net Core 2.0 WebApi项目

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

因此,这里首先是问题: 对于仅返回实体的List方法,它可以正常工作

但是对于返回单个Object的Methods,它给出了:

  [HttpGet]

    public Choice ChoiceByID(int ID)

    {

        var result = this.PersistenceManager.Context.Choice

            .SingleOrDefault(n => n.ID == ID);

        return result;

    }

微风错误错误:无法将此端点转换为IQueryable


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


    [HttpGet]

    public IQueryable<Choice> ChoiceByID(int ID)

    {

        var result = this.PersistenceManager.Context.Choice

            .Where(n => n.ID == ID);

        return result;

    }

它会给:


微风错误错误:此EntityQuery ctor需要有效的json字符串。以下不是json


到目前为止,没有运气可以解决问题


倚天杖
浏览 178回答 2
2回答

慕村9548890

经过一些挖掘和克隆微风git之后,我发现了问题所在,看来efcore更改微风似乎应该如何称呼您的终点:以前的第一个参数没有在那里(或者我没有使用它)所以解决问题:更改为@Nkosi提供的控制器在您的客户端中,添加以下几行(在您的构造函数中):从'breeze-client'导入*作为微风;//导入到顶部breeze.config.initializeAdapterInstance('uriBuilder','json')//添加到您的构造函数

holdtom

由于要迁移到.net核心,请考虑遵循建议的控制器操作语法结构,以避免出现任何不可预见的问题。[HttpGet]public IActionResult ChoiceByID(int ID) {&nbsp; &nbsp; var result = this.PersistenceManager.Context.Choice&nbsp; &nbsp; &nbsp; &nbsp; .SingleOrDefault(n => n.ID == ID);&nbsp; &nbsp; if(result == null)&nbsp; &nbsp; &nbsp; &nbsp; return NotFound()&nbsp;&nbsp; &nbsp; Ok(new List<Choice>() { result });}或第二个例子[HttpGet]public IActionResult ChoiceByID(int ID) {&nbsp; &nbsp; var result = this.PersistenceManager.Context.Choice&nbsp; &nbsp; &nbsp; &nbsp; .Where(n => n.ID == ID).ToList();&nbsp; &nbsp; if(result.Any())&nbsp; &nbsp; &nbsp; &nbsp; return Ok(result);&nbsp; &nbsp; return NotFound();}
打开App,查看更多内容
随时随地看视频慕课网APP