我創建具有下列層的WPF應用程序:實體框架 - 我該打電話的DbContext從BLL或DAL
UI(查看+的ViewModels) - > BLL - > DAL
所有這一切,參考域模型層。
此刻,我通過BLL將所有數據庫調用從UI傳遞到DAL。 但我不確定這是否正確。
大部分在BLL的方法是這樣的:
public ICollection<User> GetUsers()
{
return dbAccess.GetUsers();
}
這反過來又調用在DAL類似的方法:
public ICollection<User> GetUsers()
{
using (var context = new DbContext())
{
return context.Users.ToList();
}
}
1)輸送從BLL到調用此方法DAL似乎相當多餘。當然,有些BLL方法實際上有一點業務邏輯。我應該拋棄BLL嗎?
2)這種方法的另一個問題是我不能使用延遲加載,因爲DbContext是在DAL中創建和處理的。我猜這可以通過在ViewModel中創建DbContext來解決,但是什麼時候應該處理它呢?
3)最後,因爲我沒有使用延遲加載,我不得不加載我的相關實體。 但並非所有視圖都需要相同的相關實體,所以我通常會得到幾個返回相同實體但包含不同的實體的方法。這可以嗎?
X)我所有的數據庫方法都存在於一個名爲DbAccess的大型類中。爲我的每個ViewModel(或者每個實體)創建一個DB服務類會更好嗎?
BLL和DAL之間的解耦肯定是一個優勢。在HttpRequest上不確定SilverLight是否具體?這將對應於WPF中的ViewModel嗎? – msp1982dk
對不起,沒有注意到它是WPF,我只是假設它是MVC。真的不知道WPF和EF如何一起工作。 –