Вопрос

Я смотрю на реализацию некоторых LINQ to SQL, но изо всех сил пытаюсь понять, как мы добавим бизнес-правила управления доступом, например, клиент может просматривать только свои заказы. В службах данных ado.net запросчики выполняют именно то, что мне нужно, и могут видеть, как проверить обновление / вставку / удаление, но есть ли эквивалент этого:

[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 (строка customerId)

Это было полезно?

Решение

Я думаю, что в этом случае лучшим решением будет создание настоящего бизнес-уровня, который находится между прикладным уровнем и вашими классами LINQ to SQL.

Затем вы запросите свой бизнес-уровень, который, в свою очередь, реализует всю вашу бизнес-логику и фильтрацию. Если правильно спроектировать, этот бизнес-уровень может быть достаточно прозрачным для любого, кто кодирует прикладной уровень, и тогда все будут счастливы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top