Я не знаю, является ли это именно тем, что вам нужно, но вы можете взглянуть на код MVC Магазина Роба Конери. Он использует вариант шаблона хранилища с поставщиком linq. Он сопоставляет объекты LINQ to Sql с объектами домена, а затем возвращает объекты домена от поставщика хранилища на уровень обслуживания, который оборачивает поставщика, позволяя ему проработать некоторую логику с данными, возвращаемыми до того, как они попадут на бизнес-уровень.
Веб-трансляции с MVC Storefront
код
Для меня это звучит так, как будто вы хотите, чтобы провайдеры возвращали DTO, а затем вы хотите сопоставить DTO с объектами домена на уровне хранилища / службы. В этом случае вы можете сопоставить ваш поставщик LINQ to SQL с DTO, сделать так, чтобы он возвращал их, а затем сопоставить DTO с объектами домена на уровне хранилища / службы. Это должно работать просто отлично, но это может стать утомительным, так как теперь у вас будет 2 слоя отображения.
В этом случае вы бы имели:
ProductService, который принимает IProductRepository. Он вызывает методы в IProductRepository для возврата ваших DTO. Затем он сопоставляет DTO с реальными бизнес-объектами и возвращает их в вызывающий код.