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層使用了一個類

相關問題