瞬間明白ADO.NET數據服務是怎么回事
ADO.NET還是比較常用的,于是我研究了一下ADO.NET數據服務,在這里拿出來和大家分享一下,希望對大家有用。ADO.NET數據服務框架支持具象狀態傳輸 (REST) 語義以外的功能。例如,服務操作和偵聽器可用于將驗證邏輯或安全過程添加到查詢和更新中。可以使用 ADO.NET 數據服務定義的標準語法寫入服務操作以對輸出進行篩選或排序。以上示例的查詢字符串中使用了排序語法,其中的 $orderby 和 $top 運算符應用于操作結果。
利用偵聽器可以將自定義應用程序邏輯插入到數據服務的請求或響應過程中。必須為由數據服務公開的給定實體集顯式注冊偵聽器方法。在指定的實體集上執行查詢、插入、更新或刪除操作時,將調用相應的偵聽器。然后,偵聽器可能會更改數據、執行授權策略或者甚至終止操作。
#T#ADO.NET數據服務也支持由關系數據庫管理系統實現的存儲過程。實體數據模型 支持將數據檢索和修改映射到存儲過程。ADO.NET 數據服務對此功能進行了改編。服務操作的服務范圍可見性由某個方法控制,其方式與實體集可見性的控制方式大致相同。例如,若要使上述示例中的 CustomersByCity 方法可供訪問,請將下圖中的代碼添加到派生自 DataService 的類。
- public class Northwind : DataService<NorthwindEntities>
- {
- public static void InitializeService(
- IDataServiceConfiguration config)
- {
- config.SetServiceOperationAccessRule("CustomersByCity",
- ServiceOperationRights.All);
- }
- [WebGet]
- public IQueryable<Customer> CustomersByCity(string city)
- {…
- }
- }
偵聽器
利用 ADO.NET數據服務,數據服務開發人員能夠截獲請求/響應管道并注入自定義驗證邏輯。在 ADO.NET數據服務中,偵聽器具有兩大作用:使您能夠向處理管道添加驗證邏輯;提供一個用于在每個請求中插入自定義身份驗證策略的場所。查詢偵聽器不能采用參數。
請求/URI 處理
當數據服務接收到 GET 請求時,將處理請求 URI 并調用數據服務上定義的任何查詢截獲方法。下面的示例演示查詢偵聽器方法的實現,此方法可截獲針對訂單的 GET 請求。此偵聽器僅返回分配給滿足 CustomerID=="AROUT" 條件的客戶的訂單。若要對發送請求的用戶進行身份驗證,以便此方法將返回分配給每個用戶的訂單,則需要更多代碼。
[QueryInterceptor("Orders")]
public Expression<Func<Orders, bool>> FilterOrdersByCustomer()
{
return o => o.Customers.CustomerID == "AROUT";
}