我是一个新手试图了解适当的模型场景。我正在使用最新的MVC 4和web.api以及DB-first EF。在示例场景中,我有一个State实体,City实体(w / State FK),Address实体(w / City FK)和Person实体(w / Address FK)。当我列出Persons实体时,我想在Person实体中显示数据以及城市名称(通过FK)和州名称(通过FK)。看来特定的ViewModel是合适的,但是使用Web.Api,是不是真的只应该有特定的实体模型而不是viewmodel?
答案 0 :(得分:0)
“但是使用Web.Api,并不是真的应该有 特定的实体模型而不是视图模型?“
如果要为网格发回平面视图,可以创建一个具有要在网格上显示的属性的类(模型),使用通过EF检索的数据填充模型并发送该模型(或模型集合)作为API响应。
也许像
public class GridRow
{
public string PersonName { get; set; }
public string AddressLine1 { get; set; }
public string AddressLine2 { get; set; }
public string StateName { get; set; }
}
然后,如果我们认为你的API正在返回什么资源 - 它不再真正返回Person或State(尽管它使用了那些数据)它实际上正在返回GridData。所以你的GridDataController可能有
public IEnumerable<GridRow> Get(){ //get and return the collection to be consumed by the grid }
无论如何我就是这样做的。