我試圖在Winform中首次實現此體系結構。所以我對我有一個簡單但非常重要的問題。 舉一個簡單的例子。我希望表單能夠檢索用戶列表並允許修改電話號碼。 我有這樣的第一步驟(簡化和我通常使用的接口)Winform應用程序中的3層體系結構
public Form1()
{
InitializeComponent();
UserService _userService = new UserService();
listBoxUsers.DataSource = _userService.GetAllUsers();
}
class User
{
public int Id { get; set; }
public string Name { get; set; }
public string Phone { get; set; }
}
class UserService
{
UserRepository _userRepository=new UserRepository();
public Dictionary<int, string> GetAllUsers()
{
DataTable dtbl= _userRepository.AllUsers();
//Some code here
return dict;
}
}
class UserRepository
{
public DataTable AllUsers()
{
//Sql query
return dtbl;
}
}
現在通過選擇lisbox用戶,我能夠顯示一些信息作爲電話號碼。當我更改電話號碼時,我需要一個名爲UpdatePhoneNumber的方法來更新SQL數據庫。 但是,它放在哪裏? User或UserService(我不談論SQL查詢,只是邏輯) 然後,如何訪問(此處或應用程序中的其他位置)此用戶屬性以將其顯示在表單中?直接使用_user.Id(用戶必須在表單中實例化)或實現一個_userService。檢索User.ID的id(在這種情況下,Form只知道UserService類)。 非常感謝您的寶貴幫助
爲什麼'GetAllUsers()'返回'Dictionary'?我期望有一個「字典」(或者甚至只是一個「IEnumerable 」)。 'User'就是*數據傳輸對象。因此,當您更改電話號碼*或任何其他屬性*時,只需在DTO中更改它,然後在服務和存儲庫中使用類似「更新(用戶用戶)」的方法。負責檢查是否有任何更改以及存儲庫實際將更改寫入數據庫(或任何類型的存儲)的服務。 –
Corak