1

与实体合作时,建议使用以下哪项?(以下代码在 UI 层。UserManager在业务层)

1-

protected void btnReturn_Click(object sender, EventArgs e)
{
    var user = new User();
    user.Name = txtName.Text;
    user.Address = txtAddress.Text;
    ...
    new UserManager().AddUser(User);
}  

在用户管理器中:

public void AddUser(User user)  
{
    _repository.Add(user);
    _repository.SaveChanges();
}  

public void DeleteUser(User user)  
{
    _repository.Delete(user);
    _repository.SaveChanges();
}  

2-

protected void btnReturn_Click(object sender, EventArgs e)
{
    new UserManager().AddUser(txtName.Text, txtAddress.Text, ...);
}  

在用户管理器中:

public void AddUser(string name, string address,...)  
{
    var user = new User();
    user.Name = name;
    user.Address = address;
    context.Users.Add(user);
    context.SaveChanges();
}  

public void DeleteUser(int userID)  
{
    var user = rep.First(u => u.UserID = userID)
    _repository.Delete(user);
    _repository.SaveChanges();
}  
4

3 回答 3

1

选择第一个选项。稍后,当您发现必须在用户表单中添加 n+1 个字段时,您只需更新用户类来处理新数据即可。将这些字段添加为参数几乎总是很痛苦,因为您应该更新对该方法的每个调用以包含这些字段,即使只有一个调用实际上需要新字段。

此外,根据经验,如果方法的参数数量超过五个,您应该考虑使用对象来传递这些参数。

于 2011-06-07T07:28:56.907 回答
1

您可以在 Repository(es) 的顶部添加一个 Service (Facade) 层,然后在该层实现复杂的方法和简单的方法,例如 CRUD。有了这个新层,您在 UI 层中只使用了一个类

于 2011-08-28T21:04:33.437 回答
0

我会选择第一个 - 传递一个对象。我觉得维护起来会更方便。

于 2011-06-07T07:15:16.437 回答