OK vì vậy tôi có chế độ xem "Chi tiết" của Khách hàng được nhập mạnh sẽ lấy Mẫu đối tượng khách hàng.ASP.NET MVC/LINQ: Cách thích hợp để lặp qua Linq.EntitySet trong Chế độ xem là gì?
Tôi đang sử dụng LINQ to SQL và mọi Khách hàng đều có thể có nhiều khoảng cách (đỗ xe).
Đây là mối quan hệ FK trong cơ sở dữ liệu để mô hình Khách hàng được tạo LINQ của tôi có bộ sưu tập "Không gian". Tuyệt quá!
Dưới đây là một đoạn mã từ CustomerRepository tôi, nơi tôi lặp qua chỗ đậu xe của khách hàng để xóa tất cả các khoản thanh toán, không gian và sau đó cuối cùng là khách hàng:
public void Delete(Customer customer)
{
foreach (Space s in customer.Spaces)
db.Payments.DeleteAllOnSubmit(s.Payments);
db.Spaces.DeleteAllOnSubmit(customer.Spaces);
db.Customers.DeleteOnSubmit(customer);
}
mọi thứ hoạt động như mong đợi!
Bây giờ trong "Chi tiết" của tôi xem tôi muốn để cư một bảng với Spaces của khách hàng:
<% foreach (var s in Model.Spaces)
{ %>
<tr>
<td><%: s.ID %></td>
<td><%: s.InstallDate %></td>
<td><%: s.SpaceType %></td>
<td><%: s.Meter %></td>
</tr>
<% } %>
tôi nhận được lỗi sau:
foreach statement cannot operate on variables of type 'System.Data.Linq.EntitySet' because 'System.Data.Linq.EntitySet' does not contain a public definition for 'GetEnumerator'
Cuối cùng, nếu tôi thêm chút này mã cho một phần Khách hàng của tôi và sử dụng foreach trong chế độ xem để lặp qua ParkingSpaces mọi thứ hoạt động như mong đợi:
public IEnumerable<Space> ParkingSpaces
{
get
{
return Spaces.AsEnumerable();
}
}
Vấn đề ở đây là tôi không muốn lặp lại bản thân mình. Tôi cũng nghĩ rằng tôi có thể sử dụng một ViewModel để vượt qua một bộ sưu tập Spaces để xem, tuy nhiên LINQ đã infers và tạo ra các Spaces bất động sản trên mô hình khách hàng vì vậy tôi nghĩ rằng nó sẽ được sạch sẽ để chỉ sử dụng đó.
Tôi thiếu điều gì đó đơn giản hoặc tôi đang tiếp cận điều này không chính xác?
Cảm ơn!
Chế độ xem của bạn có được nhập mạnh vào 'IEnumerable' không? Nếu không, đó có lẽ là lý do tại sao bạn không thể liệt kê nó, mà không có chút mã trợ giúp. –
Chế độ xem của tôi được nhập mạnh vào Inherits = "System.Web.Mvc.ViewPage" Có lẽ tôi chưa đủ rõ ràng, nhưng chế độ xem cung cấp chi tiết tài khoản của Khách hàng. Khách hàng có bất kỳ số lượng không gian nào cũng sẽ được hiển thị trên trang này. Vì vậy, tôi không muốn chỉ là một danh sách các Không gian, tôi muốn có một cái nhìn chi tiết về một tài khoản Khách hàng bao gồm các Không gian của Khách hàng. –