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); 
} 

在的UserManager:

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, ...); 
} 

而在的UserManager :

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(); 
} 

回答

1

选择第一个选项。之后,当您发现必须将n + 1个字段添加到用户表单时,您可以更新用户类来处理新数据。将这些字段作为参数添加几乎总是一种痛苦,因为即使只有一个调用实际需要新字段,您应该更新对该方法的每个调用以包含这些字段。另外,作为一个经验法则,如果一个方法参数的数量超过五个,则应该考虑使用一个对象来传递这些参数。

+0

谢谢。你是对的。使用对象似乎更合理。也可以查看http://stackoverflow.com/q/2294995/337294了解更多信息。 – Kamyar 2011-06-07 07:47:17

0

我会去第一个 - 传递一个对象。我觉得这会更容易维护。

1

您可以在存储库中添加服务(Facade)层顶层,然后在此层实现复杂方法和简单方法,如CRUD。 有了这个新图层,您只在UI层使用了一个类

相关问题