我试图在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