여기에 ViewModels에 대해 오해 할 수도 있지만 정적 인 Get
메서드를 IQueryable
으로 전달하는 것은 나쁜 습관입니까? 나는 이것을 시도하지 않았기 때문에 작동하는지 확실하지 않지만 ViewModels의 사용법에 관해서는 더 큰 질문입니다. 예를 들어ViewModel에 IQueryable을 전달하는 나쁜 습관
: -> 목록
using (var db = something.Invoke()) {
var query = some query;
var data = MyViewModel.Get(query); //pass an IQueryable
//do something with data
}
class MyViewModel {
public List<int> Something {get; set;}
public static MyViewModel Get(IQueryable data) {
var view = new MyViewModel();
var list = new List<int>();
foreach (var d in data) {
list.Add(d.Column);
}
view.Something = list;
return view;
}
}
그것은 단지 더 일반적인 데이터 구조 내 데이터베이스를지도하고 (데이터베이스와 같은 또 다른 매핑을 내 뷰 모델에 그것을 통과해야 정말 중복 것 같다 - > ViewModel). 내 쿼리를 전달하고 매핑 중 100 %가 ViewModel에서 발생하도록하는 것이 더 쉬울 것입니다. 대신에 inbetween 단계 (데이터베이스 -> ViewModel)가 필요합니다.
안녕하세요. 나는 실제로이 옵션을 고려하기 시작했다. 정말 비슷한 뷰 모델을 반복해서 만들어야하는 것은 너무 번거롭고 - EF가 IQueryable 옵션을 가지고 있기 때문에 뷰 모델 생성자가 스스로를 만들도록하는 것이 거의 타당합니다. 그것은 결국 "생성자"가 무엇인지에 대한 것입니다 ... SRPrinciple을 실제로 위반하는 것인가 궁금합니다. – Worthy7