Khi sử dụng các ví dụ cho một trang ứng dụng, tôi đã sau TodoItem điều khiển:Ứng dụng một trang, upshot.js, DbContext và DbDataController: Chỉ hỗ trợ mô hình thực thể?
public partial class MVC4TestController : DbDataController<MVC4TestContext>
{
public IQueryable<TodoItem> GetTodoItems()
{
return DbContext.TodoItems.OrderBy(t => t.TodoItemId);
}
}
Câu hỏi 1:
Dường như chỉ EntityModels được hỗ trợ?
Khi sử dụng một ViewModel thực (mô hình chỉ được sử dụng cho các khung nhìn, không được sử dụng như ánh xạ 1: 1 cho thực thể cơ sở dữ liệu), DbDataController không hỗ trợ điều này.
Cũng sử dụng Linq.Translations hoặc PropertyTranslator dường như không làm việc, thấy chiết xuất này mã:
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);
}
}
Câu hỏi 2:
thiết kế đề nghị là gì khi sử dụng SPA, DBContext và ViewModels?
Sau một số thử nghiệm khác: Bạn có thể sử dụng các đối tượng DTO của riêng mình cho đến khi bạn có thuộc tính được ánh xạ Id được đánh dấu là [Khóa]. Nhưng đối với giàn giáo những thứ bạn cần phải có một mô hình dựa trên db "thực". Sau khi bộ điều khiển và công cụ xem được tạo ra, bạn có thể dễ dàng thay thế các công cụ DBController bằng DTO của riêng bạn và tạo dữ liệu theo ý muốn. Nhưng vì lý do bạn không thể sử dụng DbContext cho điều đó trong các phương thức Update/Insert helper của DbController. – Obiwan007