linq to sqlクエリインターセプター
-
22-07-2019 - |
質問
一部のLINQ to SQLの実装を検討していますが、顧客aなどのアクセス制御ビジネスルールを注文の表示のみに追加する方法を見つけるのに苦労しています。 ado.netデータサービスでは、クエリintercptorsは私が望んでいることを正確に実行し、更新/挿入/削除を確認する方法を確認できますが、これと同等のものがあります:
[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(string customerId)
解決
この場合、より良い解決策は、アプリケーション層とLINQ to SQLクラスの間に位置する真のビジネス層を構築することだと思います。
その後、ビジネスレイヤーにクエリを実行し、すべてのビジネスロジックとフィルタリングを実装します。適切に設計されていれば、そのビジネスレイヤーはアプリケーションレイヤーをコーディングしている誰に対してもかなり透明になり、誰もが満足します。
所属していません StackOverflow