7

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?

Trả lời

3

Theo như tôi biết cho đến thời điểm này - nó hướng vào việc sử dụng các lớp mô hình "thực" được liên kết với DbContext. Tôi có cùng một vấn đề với bạn - tôi cần phải sử dụng các đối tượng DTO của riêng tôi là "phẳng". Việc tuần tự hóa Json hiện không thể tuần tự hóa dữ liệu có tham chiếu cha mẹ trong các đối tượng con (tham chiếu cyclic). Thông thường tôi không cần cây thực thể anyways vì vậy tôi tạo ra các lớp học nhỏ hơn mà phù hợp hoàn hảo cho xem. Tôi đã cố gắng sử dụng một Controller thông thường với JsonResult và phân tích cú pháp mô hình trả về thành ko.mapping.fromJS sau khi lấy ra dữ liệu. Thats làm việc tốt. Nhưng - bạn phải chăm sóc tất cả những thứ tuyệt vời mà các khung nhìn đã tạo của MVC4 đã được xử lý (như tạo điều hướng, v.v.). Có thể ai đó tìm thấy giải pháp để "giả mạo" dữ liệu DbContext với DTO.

+2

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

Các vấn đề liên quan