質問

一部の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クラスの間に位置する真のビジネス層を構築することだと思います。

その後、ビジネスレイヤーにクエリを実行し、すべてのビジネスロジックとフィルタリングを実装します。適切に設計されていれば、そのビジネスレイヤーはアプリケーションレイヤーをコーディングしている誰に対してもかなり透明になり、誰もが満足します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top