我必须使用BreezeController吗?

时间:2013-03-05 22:31:59

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

to-do list sample正在使用BreezeController来提供API。 EFContextProvider用于提供Metadata字符串和SaveChanges()等方法。

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

在常规ApiController中,我们可以轻松返回自己的视图模型。但是,如果我转向常规ApiController,则在调用api时,breeze会要求Metadata,这是由

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

如果我们使用BreezeController

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

1 个答案:

答案 0 :(得分:3)

“BreezeController”只是具有'BreezeController'属性的任何API控制器。

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

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

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