public class Order
{
public int Id {get;set;}
[DisplayName("User")]
public long UserId { get; set; }
[ForeignKey("UserId")]
public virtual User User { get; set; }
public decimal Amount { get; set; }
}
Với IEnumurable
Khi nào cần hiển thị IEnumerable thay vì ICollection?
public class User
{
public int Id{get;set;}
public virtual IEnumerable<Order> Orders { get; set; }
}
public User GetWithOrders()
{
var myUser=UserRepository.GetByEmail("[email protected]");
myUser.Orders=OrderRepository.GetByUserId(myUser.Id);
return myUser;
}
Với ICollection
public class User
{
public int Id{get;set;}
public virtual ICollection<Order> Orders { get; set; }
}
public User GetWithOrders()
{
var myUser=UserRepository.GetByEmail("[email protected]");
return myUser;
}
Tôi không có tải lười biếng sử dụng IEnumerable
cho một tài sản chuyển hướng. Do đó, tôi phải nhận được đơn đặt hàng cho người dùng này bằng một truy vấn khác.
Tôi có điều hướng với ICollection
. Vì vậy, tôi có thể tiếp cận đơn đặt hàng từ người dùng. Điều này có vẻ mát mẻ. Nhưng sau đó tôi có thể thêm đơn đặt hàng mới cho người dùng trong Bộ điều khiển mà không cần sử dụng dịch vụ hoặc kho lưu trữ.
Đó là loại thao tác dữ liệu ở cấp bộ điều khiển. Đây có phải là hình mẫu không?
Thứ nhất, tôi cũng nghĩ viewmodel. Nhưng tôi không chắc nó có thể mang lại sự phức tạp hơn hay không. Tôi sẽ sử dụng chế độ xem nếu tôi phải. Cảm ơn. –
Điểm không phải là chế độ xem, thực sự. Đó là BLL hoặc Mô hình miền. Một đối tượng đại diện cho trường hợp sử dụng của bạn (Người dùng có thể có Đơn đặt hàng). Sử dụng điều đó nếu bạn không muốn để lộ mô hình dữ liệu của bạn với tiếp xúc bên trong của họ. – CodeCaster
Tại sao bạn trả về '_orders.AsEnumerable();' trong khi '_orders' đã là 'IEnumerable'? –