我已将微风添加到我的webapi中,但仍未添加自定义$ id和$ type属性

时间:2019-05-22 21:37:47

标签: c# breeze asp.net-core-webapi

我正在尝试将Breeze添加到我的.Net Core 2.2 webapi中,但我无法弄清缺少的内容。为了进行故障排除,我创建了一个非常简单的webapi,该API返回1个项目。这行得通,但是微风并未将其自定义属性添加到我的实体中。

我已将[BreezeQueryFilter]添加到控制器中,但是未将$ id和$ type属性添加到我的实体中。

我已经用我现有的资源创建了一个简单的存储库。

https://github.com/wstow/SimpleBreeze

谢谢

我的控制器

visibleif

我的经理

[Route("api/[controller]/[action]")]
[BreezeQueryFilter]
public class OrderController : Controller
{
    private OrderContext _context;

    private OrderManager PersistenceManager;

    public OrderController(OrderContext context)
    {
        this._context = context;
        PersistenceManager = new OrderManager(context);
    }

    [HttpGet]
    public IActionResult Metadata()
    {
        return Ok(PersistenceManager.Metadata());
    }

    [HttpGet]
    public IQueryable<ReqStatus> Status()
    {
        return PersistenceManager.Context.ReqStatus;
    }

}

我的背景

 public class OrderManager : EFPersistenceManager<OrderContext>
 {
    public OrderManager(OrderContext orderContext) : base(orderContext) { }
}

1 个答案:

答案 0 :(得分:1)

问题出在JSON序列化设置中。 Newtonsoft.Json是高度可配置的,您需要使用正确的设置来与Breeze客户端正确通信。

为方便起见,Breeze具有配置功能,可将设置更改为默认值。您从Startup.cs调用它:

    public void ConfigureServices(IServiceCollection services)
    {

      var mvcBuilder = services.AddMvc();

      mvcBuilder.AddJsonOptions(opt => {
        var ss = JsonSerializationFns.UpdateWithDefaults(opt.SerializerSettings);
      });
      mvcBuilder.AddMvcOptions(o => { o.Filters.Add(new GlobalExceptionFilter()); });
...

缺少文档,但是您可以在looking in the Breeze code处看到JsonSerializationFns的作用。

最后一行添加了一个异常过滤器,该异常过滤器包装了服务器端验证错误,以便Breeze客户端可以处理它们。您可以here看到它的作用。