Al utilizar los ejemplos de aplicación Una sola página, he la siguiente TodoItem controlador:Aplicación de una sola página, upshot.js, DbContext y DbDataController: ¿Solo se admiten los modelos de entidad?
public partial class MVC4TestController : DbDataController<MVC4TestContext>
{
public IQueryable<TodoItem> GetTodoItems()
{
return DbContext.TodoItems.OrderBy(t => t.TodoItemId);
}
}
Pregunta 1:
Parece que sólo EntityModels son compatibles?
Cuando se utiliza un modelo de vista real (el modelo solo se utiliza para las vistas, no se usa como correlación 1: 1 con la entidad de base de datos), el DbDataController no es compatible con esto.
También usando Linq.Translations o PropertyTranslator no parecen funcionar, consulte este extracto código:
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);
}
}
Pregunta 2:
¿Cuál es el diseño recomendado cuando se utiliza SPA, DBContext y ViewModels?
Después de algunos experimentos más: puede usar sus propios objetos DTO siempre que tenga una propiedad asignada de Id que esté marcada como [Key]. Pero para andamiar las cosas, necesita tener un modelo basado en bases de datos "reales". Después de generar el controlador y ver cosas, puede reemplazar fácilmente las cosas de DBController con su propio DTO y crear los datos que desee. Pero debido a que no puede usar el DbContext para eso en los métodos Update/Insert helper del DbController. – Obiwan007