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/