Я рефакторинг своего приложения, чтобы меньше зависеть от источника данных (в настоящее время я использую Linq To Sql).Но мне нравится, как Linq To Sql генерирует мои классы из моей базы данных и отслеживает изменения.
Если бы это был не Linq, я бы просто обернул класс интерфейсом, а затем позволил своему бизнес-уровню зависеть от этого интерфейса.Однако я не могу сделать это с помощью linq.
Итак, допустим, у меня есть хранилище IFooRepository
, где Foos
- это таблица в базе данных, а Linq сгенерировал для меня класс Foo
.Если бы я не беспокоился о зависимостях, я бы просто возвратил объект linq Foo
.Но мой слой бизнес-логики не имеет понятия о моем слое Linq, поэтому я не могу внедрить эти объекты в свой BLL.И поскольку мои объекты Linq не могут реализовать какой-либо интерфейс, у меня не может быть никаких функций в IFooRepository, возвращающих реализацию IFoo
.
Итак, я хочу, чтобы мой BLL обрабатывал объекты Linq, но не зная об этом,что мой слой Linq будет отслеживать изменения BLL.Это возможно?Я имею в виду просто наследовать класс от объекта Linq, а затем использовать его для передачи.Это будет действительным?