MVP (Passive View 및 EF (모델 우선))를 사용하여 응용 프로그램을 만듭니다. 내가 아는 한, 발표자는 EF를 통해 작성된 DataContext에서 직접 데이터를 가져 왔습니다. 그것은이 같은 같습니다 그래서 발표자가 모든 주문의 목록을 가져옵니다 MVP : 수동보기 (EF 사용) 및 레이어
private void UpdateOrderTableControl()
{
IList<Order> orders = dataContext.Orders.ToList();
IList<OrderViewModel> viewOrders = new List<OrderViewModel>();
foreach (var o in orders)
{
viewOrders.Add(new OrderViewModel()
{
OrderId = o.Id,
CustomerId = o.CustomerId,
LastName = o.Address.LastName,
FirstName = o.Address.FirstName,
Company = o.Address.Company,
Weight = o.Weight,
Sum = o.Sum,
Date = o.Date
});
}
view.GetOrderDataGridView().DataSource = viewOrders;
}
은, (서로 다른 테이블에서 데이터를 결합, 위의 예 주소) 순서의 뷰 모델의 목록을 만듭니다 다음에 뷰 모델 목록을 보냅니다 전망.
그것의 거의 같은 일을 다른 방법으로 주위 순서대로 편집하거나 DB에 추가 할 뷰에서 데이터를 검색 할 때 :
private void SaveOrder()
{
GetOrderDataFromView();
if (isNewOrder)
{
dataContext.Orders.Add(selectedOrder);
}
else
{
dataContext.Entry(selectedOrder).State = EntityState.Modified;
}
dataContext.SaveChanges();
isSaved = true;
UpdateOrderTableControl();
}
1) EF (특정 회사의 EF를 통해 만들어진 수 있으며, DataContext 등)을 DAL로 간주 할 수 있습니까? 자체 프로젝트에 있어야할까요?
2) 발표자가 DataContext에 대한 액세스 권한을 갖고 있으면 안되지만 둘 사이의 다른 레이어에 액세스해야한다고 생각하십니까? 그것이 서비스 계층, 비즈니스 계층 또는 둘 다 될 것입니까?
3) 내가보기 모델이라고 부르는 것은 실제로 뷰 모델입니까, 아니면 다른 것입니까? 나는 다만 나의 용어를 올바르게하고 싶다.
편집 :
4) 내가 EF에 의해 생성 된 개체에 비즈니스 로직을 추가하는 방법에 대한 몇 가지 제안을 읽을 수 있지만 나에게 꽤 괜찮 소리가 나지 않는다. EF 위에 별도의 비즈니스 계층에 비즈니스 개체를 만들어야합니까? 나는 Order (EF에 의해 생성됨), OrderBO (비즈니스 오브젝트) 및 OrderViewModel (표시 될 순서)을 가질 것임을의 L합니다. 다른 레이어를 추가 했으므로 맵핑을 더 많이해야하지만 프레젠터를 더 밝게 만들 것입니다. 사전에
감사합니다!
고맙습니다. 나는 또 다른 질문을 추가했다. – Lahey
DDD (Domain Driven Design) 접근법에 대해 읽어 보시기 바랍니다. 대부분의 경우 비즈니스 로직은 비즈니스 규칙, 유효성 검증, 관계 등을 설명하는 별도의 계층입니다. –