Разделение структуры LINQ to SQL

ОГЛАВЛЕНИЕ

Данная статья расширяет идею комбинации внедрения зависимости (Dependency Injection) с LINQ to SQL. Структура, определенная в данной статье использует структуру внедрения зависимости компании Майкрософт, названную Unity, а также простую версию AOP, называемую Policy Injection (Внедрение политики). Обе эти структуры можно найти в библиотеке Microsoft Enterprise Library 4+. Используя внедрение зависимости мы можем положиться на IoC, что создаст объекты, зависимости которых будут уже установлены. В таком случае мы обеспечим только то, что один DataContext (или в нашем случае IDataContext) будет использован между любыми созданными сущностями или сервисами. Таким образом нам не нужно управлять масштабом DataContext вручную.

Поскольку все объекты в данной структуре будут проинформированы о IDataContext благодаря внедрению зависимости, мы можем добавить несколько полезных методов к нашим сущностям, такие как "Save" (к примеру Article.Save();). Многие иногда используют EntitySpaces и им нравится этот синтаксис в отличии от LINQ to SQL. Используя Unity в качестве структуры внедрения зависимости, мы можем определить уровень данных в файле конфигурации. Конфигурация существенным образом сопоставляет интерфейсы с объектами, что означает возможность очень простого изменения типа объекта, который мы хотим установить. Это означает, что мы можем создать макет уровня данных, или с легкостью проецировать на совершенно  другой уровень данных.

Мы добавили ко всему этому PolicyInjection (внедрение политики) поскольку из-за того, как структура будет собрана, данное внедрение можно будет легко реализовать. Это позволит произвести простую регистрацию, основанную на методах, и кэширование (среди всего прочего). Это хороший пример комбинации внедрения зависимости с внедрением политики.

Исходный проект основан на тестах NUnit.