我在我的web項目上使用3層體系結構。 DAL - > EF 4包裝與經典的CRUD方法(AddEntity,RemoveEntity adn等) BAL - >業務邏輯和查詢公開(selectByName,byCity,bySomeOtherProperty)。 UI - Aspx頁面3層應用程序 - 導航屬性
我的問題是關於由EF公開的navigationProperty。如果我有一個CustomerRepostiory,ASPX身邊,我不想讓實體上不屬於客戶操作,假設follwing POCO類:
public class Customer
{
public int Id {get; set;}
public string Name {get; set;}
public ICollection<Orders> Order{get;set;}
}
和ASPX你執行這樣的事情:
var customer = bll.getCustomerByName("alex");
customer.Order.Add(new ..) // BAD, I don't want allow it
我該怎麼辦?也許我必須創建一個poco類包裝器才能「隱藏」一些屬性? 哪個方法最好?
爲什麼你不希望允許這樣做?是否因爲你想限制在UI層可以做什麼?爲什麼你的情況不好? –
是的,我想回顧在UI層可以做什麼。此外,我的BLL包含插入,刪除,更新和保存方法,因此他們是CRUD操作的唯一責任人。每個命令都需要進行一些驗證,如果您使用navigationProperty添加一些內容,則無法執行任何控件。你必須通過Insert方法。 – bit