그렇기 때문에 고객 개체 모델을 사용하는 강력한 형식의 고객 "세부 정보"보기가 있습니다.ASP.NET MVC/LINQ :보기에서 Linq.EntitySet을 반복하는 적절한 방법은 무엇입니까?
저는 LINQ to SQL을 사용하고 있으며 모든 고객은 여러 개의 (주차) 공간을 가질 수 있습니다.
내 LINQ 생성 고객 모델에 "공간"컬렉션이 있으므로 데이터베이스에서 FK 관계입니다. 큰!
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);
}
모두가 예상 작품과 같이
여기에 다음 마지막으로 고객의 모든 지불 공백을 삭제하는 내가 고객의 주차 공간을 반복 내 CustomerRepository에서 코드입니다! 나는 다음과 같은 오류 얻을
<% foreach (var s in Model.Spaces)
{ %>
<tr>
<td><%: s.ID %></td>
<td><%: s.InstallDate %></td>
<td><%: s.SpaceType %></td>
<td><%: s.Meter %></td>
</tr>
<% } %>
: 마지막으로
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'
를 내가의이 비트를 추가하는 경우
지금 내 "세부 사항"보기에 나는 고객의 스페이스와 테이블을 채우려 코드를 내 고객 부분 클래스에 추가하고 뷰에서 foreach를 사용하여 모든 정보가 예상대로 작동하는지 확인하십시오.
public IEnumerable<Space> ParkingSpaces
{
get
{
return Spaces.AsEnumerable();
}
}
여기에서 문제는 내가 반복하고 싶지 않다는 것이다. ViewModel을 사용하여 View에 공간 컬렉션을 전달할 수도 있다고 생각했지만 LINQ는 이미 고객 모델에 Spaces 속성을 유추하고 생성하므로 사용하는 것이 가장 깨끗합니다.
나는 간단한 것을 놓치고 있습니까? 아니면 잘못 접근하고 있습니까?
감사합니다.
보기가'IEnumerable'에 강력하게 입력 되었습니까? 그렇지 않은 경우에는 아마 도우미 코드 없이도 열거 할 수 없습니다. –
내보기에 강력하게 형식이 지정되어 있습니다. Inherits = "System.Web.Mvc.ViewPage" 아마도 명확하지 않지만 뷰는 고객의 계정 정보를 제공합니다. 고객은이 페이지에도 표시되어야하는 수의 공간이 있습니다. 따라서 Spaces의 목록 만 있으면 좋겠다. 고객의 공간을 포함하여 고객 계정에 대한 세부 정보를 원한다. –