Есть ли логическая причина, чтобы поставить его
там? Продукт класса POCO.
Не должно ли это более естественно принадлежать
вне сборки DAL?
Аргумент за включение класса POCO в реализацию постоянства заключается в упрощении развертывания и сокращении общего количества необходимых сборок.
Это не значит, что я согласен с практикой.
Лучше и, возможно, даже более общепринятым, помещать определения доменных объектов в одну сборку и реализации, которые зависят от технологии персистентности в другой.
Клиенты могут затем ссылаться на сборку определений объектов домена без привязки к стратегии реализации.
Правильно ли поставить
IProductRepository в Домене
Пространство имен? И если вы предложите переехать
классы POCO, вы также переехали бы
IProductRepository?
Да, правильно, чтобы определение Репозитория находилось в Домене.
Репозитории являются концепцией домена, они не являются общими - по крайней мере, не интерфейс, который они предоставляют (реализации могут на самом деле быть общими).
Интерфейсы для репозитория должны соответствовать определениям для сущностей (являются ли они интерфейсами POCO или просто интерфейсами) и со всеми другими объектами домена.
Что бы мне нужно было сделать, если бы я хотел
сделать DAL пригодным для использования как C #, так и
Проекты VB.NET?
Ничего особенного. Вы можете ссылаться на сборку из C # или VB.Net, независимо от того, были ли сборки DAL и / или Domain записаны в C # или VB.Net. Это большое преимущество .Net в целом, и оно сделано намеренно и конструктивно.