Quando si utilizzano gli esempi per pagina singola applicazione, ho il seguente TodoItem regolatore:Applicazione pagina singola, upshot.js, DbContext e DbDataController: sono supportati solo i modelli di entità?
public partial class MVC4TestController : DbDataController<MVC4TestContext>
{
public IQueryable<TodoItem> GetTodoItems()
{
return DbContext.TodoItems.OrderBy(t => t.TodoItemId);
}
}
Domanda 1:
sembra che solo EntityModels sono supportati?
Quando si utilizza un ViewModel reale (il modello utilizzato solo per le viste, non utilizzato come associazione 1: 1 all'entità database), DbDataController non supporta questo.
anche utilizzando Linq.Translations o PropertyTranslator non sembra funzionare, si veda questo estratto di codice:
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);
}
}
Domanda 2:
Qual è il disegno consigliata quando si utilizza SPA, DbContext e ViewModels?
Dopo alcuni altri esperimenti: è possibile utilizzare i propri oggetti DTO fino a quando si dispone di una proprietà mappata con ID contrassegnata come [Chiave]. Ma per gli scaffolding è necessario disporre di un modello "reale" basato su db. Dopo che il controller e il materiale di visualizzazione sono stati generati, è possibile sostituire facilmente i componenti di DBController con il proprio DTO e creare i dati come preferisci. Ma per causa non è possibile utilizzare DbContext per questo nei metodi helper Update/Insert di DbController. – Obiwan007