asp.net-mvc-4 - 我必须使用 BreezeController 吗?

标签 asp.net-mvc-4 asp.net-web-api breeze

to-do list sample使用 BreezeController 来提供 API。 EFContextProvider 用于提供Metadata 字符串和诸如SaveChanges() 之类的方法。

问题:它直接与DbContext对话。我仍然希望能够灵活地返回我自己的 View 模型而不是那些域模型。

在常规的ApiController中,我们可以轻松返回我们自己的 View 模型。但如果我转向常规的 ApiController,在调用 api 时,breeze 会要求提供由

提供的 Metadata
[HttpGet]
public string Metadata() {
    return _contextProvider.Metadata();
}

如果我们使用BreezeController

所以,我的问题是,我们必须使用 BreezeController 吗?我们如何使用它返回自定义 View 模型?或者,如果我们使用常规的 ApiController 来获得更大的灵活性,我们如何提供元数据

最佳答案

“BreezeController”只是具有“BreezeController”属性的任何 API Controller 。

“BreezeController”只是一个 .NET 属性,可帮助 .NET WebApi 通过 OData“语法”提供对查询过滤和排序的支持,以及对实体图和类型标识的 json 序列化支持。类型标识很重要,以便 Breeze 可以跟踪其实体管理器中的实体并合并查询结果并更新关系属性。

仅当您希望服务器提供有关查询可返回类型的元数据时,才需要“元数据”方法。也可以在“客户端”提供相同的元数据,这样您就不必实现此方法。 Breeze 示例 zip 中的 NoDb 示例包含一个这样的示例。

不要求您返回域模型而不是 View 模型。要么有效。您只需提供您使用的任何模型返回的类型的元数据。如果您想基于某些任意客户端信息执行自定义服务器端逻辑,还可以查看 EntityQuery 'withParameters' 方法。

关于asp.net-mvc-4 - 我必须使用 BreezeController 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15235435/

相关文章:

asp.net-mvc-4 - 一旦通过 SetCacheability 方法设置 Pragma 无缓存响应 header ,是否可以将其删除?

javascript - 在 IE 浏览器中运行我的 MVC Web 应用程序时遇到数据表错误

asp.net-mvc - 带有 Web Api 和 Controller 路由的 Url.Action

c# - 如何访问 ApiController 中的 Response

c# - 在操作内部分配响应属性时对 Controller 操作进行单元测试

mongodb - 我可以将 Breeze.js 与将 MongoDB 作为数据存储解决方案的 ASP.NET Web API 一起使用吗

c# - MVC4 模型与 HTTP Post 交互的误解

c# - 错误响应,OWIN 服务器中的启动选项

javascript - breezejs 导航刷新 "There is no resourceName for this query"

javascript - Breeze js : reject changes to specific property