我正在尝试将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) { }
}
答案 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看到它的作用。