나는 다음과 같은 층이있는 WPF 응용 프로그램을 만드는거야에서 DbContext를 호출해야합니다 : -> BLL -엔티티 프레임 워크는 내가 BLL 또는 DAL
UI (조회수 + ViewModels를)> DAL
모두 도메인 모델 계층을 참조하십시오.
현재 모든 DB 호출을 UI에서 BLL을 통해 DAL로 전달하고 있습니다. 하지만이 방법이 정확한지 확신 할 수 없습니다.
는 BLL에서 대부분의 메소드는 다음과 같습니다 :)
public ICollection<User> GetUsers()
{
using (var context = new DbContext())
{
return context.Users.ToList();
}
}
1 BLL에서 전화로를 전달하는이 방법을 :
public ICollection<User> GetUsers()
{
return dbAccess.GetUsers();
}
어떤 차례로 DAL에서 유사한 메서드를 호출 DAL은 꽤 중복 된 것처럼 보입니다. 물론 약간의 비즈니스 로직을 보유하고있는 BLL 메소드가 있습니다. 나는 BLL을 그냥 버려야 할까?
2)이 접근법의 또 다른 문제점은 DbContext가 생성되어 DAL에 배치되므로 지연로드를 사용할 수 없다는 것입니다. ViewModel에 DbContext를 작성하여이 문제를 해결할 수 있다고 생각하지만 언제 처리해야합니까?
3) 마지막으로 지연로드를 사용하지 않으므로 관련된 엔티티를로드해야합니다. 그러나 모든 뷰가 동일한 관련 엔티티를 필요로하지 않으므로 동일한 엔티티를 반환하지만 여러 포함이 포함 된 여러 가지 메소드로 끝나는 경우가 많습니다. 괜찮아?
X) 모든 DB 메서드는 DbAccess라는 단일 대규모 클래스에 있습니다. 각 ViewModel (또는 각 엔티티)에 대해 DB 서비스 클래스를 만드는 것이 더 좋을까요?
BLL과 DAL 사이의 디커플링은 확실히 장점 그래서 아래처럼 모든 HttpRequest에 대한 DbContext를 사용할 수 있습니다. HttpRequest에서 SilverLight와 관련이 있는지 확실하지 않은가요? WPF의 ViewModel에 해당합니까? – msp1982dk
오, 죄송합니다. WPF였습니다. MVC라고 가정했을뿐입니다. WPF와 EF가 함께 작동하는 방식에 대해 많이 알지 못합니다. –