我正在尋找實現一些LINQ to SQL,但我很難看到我們將如何添加訪問控制業務規則,如客戶只能查看他們的訂單。 在ado.net數據服務,查詢intercptors做的正是我所追求的,並可以看到如何檢查更新/插入/刪除,但有這樣的一個等價的:LINQ到SQL查詢攔截器
[QueryInterceptor("Orders")]
public IQueryable<Orders> OnQueryOrders(IQueryable<Orders> orderQuery)
{
return from o in orderQuery
where o.Customers.ContactName == HttpContext.Current.User.Identity.Name
select o;
}
還是願買電子健康我需要通過沿着線存取控制: GetOrdersByCustomer(字符串客戶ID)
就我個人而言,我發現像GetOrdersByCustomer之類的東西更容易理解和維護。攔截器在這裏感覺不必要的複雜性。想想下一個必須維護你的代碼的人,他可能不像你那麼聰明。 –
這對於簡單的場景來說可能很好,但是我希望允許更豐富的查詢構建,所以很快就會有超過100個訪問器,這反過來會讓混淆/錯誤proe /噩夢維護或重構。儘管攔截器可能會引起混淆,但它們確實可以讓關鍵代碼擔憂一致地運行 - 但是認爲賈斯汀的想法更接近我們最終會得到的結果 – steve