2013-03-05 149 views
2

to-do list sample正在使用BreezeController来提供API。 EFContextProvider用于提供Metadata字符串和方法,如SaveChanges()我必须使用BreezeController吗?

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

在常规的ApiController中,我们可以轻松地返回自己的视图模型。但是,如果我转向定期ApiController,调用API时,breeze询问Metadata,这是由

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

如果我们使用BreezeController提供。

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

回答

3

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

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

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

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

相关问题