Ste*_*ath 7 entity-framework viewmodel asp.net-mvc-4 upshot knockout.js
使用单页应用程序的示例时,我有以下TodoItem控制器:
public partial class MVC4TestController : DbDataController<MVC4TestContext>
{
public IQueryable<TodoItem> GetTodoItems()
{
return DbContext.TodoItems.OrderBy(t => t.TodoItemId);
}
}
Run Code Online (Sandbox Code Playgroud)
问题1:
似乎只支持EntityModels?
当使用真正的ViewModel(仅用于视图的模型,而不是用作1:1映射到数据库实体)时,DbDataController不支持此功能.
使用Linq.Translations或PropertyTranslator似乎也不起作用,请参阅此代码提取:
private static readonly CompiledExpressionMap<TodoItem, string> fullExpression =
DefaultTranslationOf<TodoItem>.Property(t => t.Full).Is(t => t.Title + "_" + t.IsDone);
public string Full
{
get
{
return fullExpression.Evaluate(this);
}
}
Run Code Online (Sandbox Code Playgroud)
问题2:
使用SPA,DBContext和ViewModels时的推荐设计是什么?
据我所知,到目前为止 - 它坚持使用绑定到 DbContext 的“真实”模型类。我有和你一样的问题 - 我需要使用我自己的“扁平”DTO 对象。Json序列化目前无法序列化子对象中具有父引用(循环引用)的数据。通常我无论如何都不需要实体树,所以我创建了更小的类,非常适合视图。我尝试使用带有 JsonResult 的普通控制器,并在检索数据后将返回的模型解析为 ko.mapping.fromJS 。那工作得很好。但是 - 您必须处理 MVC4 生成的视图模型已经处理的所有好东西(例如创建导航等)。也许有人找到了一种解决方法,可以用 DTO 数据“伪造”DbContext。
| 归档时间: |
|
| 查看次数: |
1567 次 |
| 最近记录: |