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

そして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();
}  
4

3 に答える 3

1

最初のオプションを選択します。後で、n+1 個のフィールドをユーザー フォームに追加する必要があることがわかった場合は、ユーザー クラスを更新して、新しいデータを処理できます。これらのフィールドをパラメーターとして追加するのは、ほとんどの場合、そのメソッドへのすべての呼び出しを更新してそれらのフィールドを含める必要があるため、呼び出しの 1 つだけが実際に新しいフィールドを必要とする場合でも面倒です。

また、経験則として、メソッドのパラメーターの数が 5 つを超える場合は、オブジェクトを使用してそれらのパラメーターを渡すことを検討する必要があります。

于 2011-06-07T07:28:56.907 に答える
1

リポジトリの最上位にサービス (ファサード) レイヤーを追加し、複雑なメソッドと CRUD などの単純なメソッドをこのレイヤーに実装できます。この新しいレイヤーでは、UI レイヤーで 1 つのクラスのみを使用しました

于 2011-08-28T21:04:33.437 に答える
0

私は最初に行きます-オブジェクトを渡します。メンテナンスもしやすいと思います。

于 2011-06-07T07:15:16.437 に答える