Я не уверен, что именно вы пытаетесь выполнить здесь, но EF почти не имеет точек экстенсивности. Лучшее, что вы можете сделать, это подключиться к событию ObjectMaterialized, запущенному ObjectContext. В CTP5, вы должны бросить свои DbContext как и в конструкторе для DbContext:
((IObjectContextAdapter)this).ObjectContext.ObjectMaterialized +=
this.ObjectContext_OnObjectMaterialized;
А затем реализовать функцию ObjectContext_OnObjectMaterialized(object sender, ObjectMaterializedEventArgs e)
. Вы сможете получить доступ к своему объекту, который, к сожалению, уже реализован. В зависимости от ваших потребностей вы можете взломать здесь какое-то интересное поведение.
Кстати, это предложение не имеет смысла для меня:
мне нужно вводить несколько репозиториев в мои доменных объекты, когда они построены для некоторых бизнес-правил.
Разве это не противоречит Перенесение объектов Невежественного домена?
слова репозитории должны были быть сервисами (я обновил оригинал). Например, объект домена может иметь несколько возможностей отправки электронной почты, поэтому я хотел бы добавить службу электронной почты при строительстве. – WDuffy
@WDuffy - имеет смысл. К сожалению, этот ответ (http://social.msdn.microsoft.com/Forums/en/adonetefx/thread/c33019e9-2ac4-4cc6-9e0b-3c6557fbf0a6) на форумах MS подтверждает, что, поскольку EF требует конструктора с нулевым аргументом, материализуйте свои POCOs, вы не можете использовать классическую инъекцию конструктора.Единственным обходным решением было бы: 1) сделать этот конструктор внутренним, а затем 2) заставить этот конструктор вызвать конструктор, который содержит аргументы HAS, которые разрешены вашим контейнером IoC. Это, к сожалению, загрязняет ваш POCO проблемами IoC. – anon
Интерфейс ICustomerRepository является ненасытным. Если вы прочтете синюю книгу DDD, вы заметите, что Эрик Эванс даже сделал это в нескольких подробных диаграммах последовательности. Это точка репозиториев, если они действительно являются репозиториями, а не просто причудливыми объектами доступа к данным. Я лично использую интерфейсы репозитория в своих собственных корнях, и он отлично работает. –