Я не говорю что логгирование не нужно. Это нормальное требование для маломальски используемой системы.
Другой вопрос, а не нужно ли было например для интранет приложения использвовать имперсонализацию, конекшн стринг с интегрэйтедидентити и логировать изменения на уровне базы.
Одними no-tracking запросами не отделаться, если хочется изменения в каждом проперти по отдельности трекать.
Фактически контекст это UoW, поэтому он пересоздается на каждый чих, а репозиторий можно реализовать как слой с кэшированием, правда тут про это сказано не было.
Кроме того, мне кажется тредование «реализовать репозиторий» очень странное. Вот требование уметь сохранять всего один объект оно понятней. Фактически оно говорит о том что у вас должен быть реализован паттерн UnitOfWork, и то что должна быть возможность иметь несколько UnitOfWork для одного пользователя одновременно, а он у вас хоть и реализован фактически, но обозван контекстом.
Хотя наверное правильным решением для вашей задачи было бы использование не POCO, а Self-Tracking Entites. В этом случае требование было бы реализованно естественно с технологией. В контекст бы атачились только те объекты, которые надо в текущий момент сохранить.
Не очень понятно зачем создавать интерфейс ILogger, если уже есть реализованное событие SavingChanges у ObjectContext. А DbContext реализует IObjectContextAdapter с пропертей ObjectContext.
Я знаю, это прозвучит как анекдот, но я реально столкнулся с ситуацией когда мы забирали проект на поддержку от другой команды. Код отдали на аутсорсинг индусу, который не долго думая отдал все на аутсорсинг китайцу и только в конце прилепил свои в двух файлах свое имя в заголовках. А китаец надергал кусков «чего то близко» с codeproject и «дописал» то, чего не хватало — один файл на 10 тысяч строк в одном методе, примерно 95% копипаста.
То что они могут не стараться, это другой вопрос, но то что я написал выше не надумано, а то что я видел своими глазами в Мумбае. Причем это не самый густонаселенный город. В Бангалоре и Дели все гораздо хуже.
Я думаю было бы понятнее почему так происходит, если принять во внимание тот факт, что в индии зарплата в 2000 рупий (меньше чем 50 долларов) считается для миллионов людей большой. Индусов ОЧЕНЬ много, индия гораздо плотнее населена, чем китай, и практически на любую работу за «копейки» в сотни рупий найдется десяток тех, у кого работы нет вообще и они будут готовы выполнять ее за десятки рупий и меньше.
Поэтому зарплаты, которые люди получают в айти — просто огромные.
Начали бы компании очень сильно штрафовать за попытку получения таких патентов. Ох какая новость, по элементу интерфейса на тачскрине можно ткнуть пальцем!
Знаете, пересел на mba с его второй реинкарнации, и не пересяду ни на что другое ни за что. 11 дюймов в дороге гораздо удобнее, чем скажем 13.
Если не считать цены, то такая соня — отличная для mba замена, потому что не хватает как раз только возможности оторвать клаву или завернуть ее за экран.
А зачем вообще в таком случае ангуляр? Обработчики можно и с реактом повесить, и кода не сильно больше.
Кроме того, вы смотрели на библиотечку OM для React? Она правда на clojurescript и тянет за собой новую кухню, но код получается очень лаконичный.
Другой вопрос, а не нужно ли было например для интранет приложения использвовать имперсонализацию, конекшн стринг с интегрэйтедидентити и логировать изменения на уровне базы.
Заметьте, это решение сейчас помечено как not-recomended, хотя оно и удобнее для n-tier.
Фактически контекст это UoW, поэтому он пересоздается на каждый чих, а репозиторий можно реализовать как слой с кэшированием, правда тут про это сказано не было.
Посмотрите мой следующий коментарий, в случае если бы вы использовали селф-трекинг то можно было бы опрашивать объекты когда они атачатся в контекст.
Хотя наверное правильным решением для вашей задачи было бы использование не POCO, а Self-Tracking Entites. В этом случае требование было бы реализованно естественно с технологией. В контекст бы атачились только те объекты, которые надо в текущий момент сохранить.
Но вообще есть же DAC (Data-Tier-Application), чем он то вам не угодил?
Не нашел есть ли режим отображения изменений? ( change tracking, как в word)
Поэтому зарплаты, которые люди получают в айти — просто огромные.
Если не считать цены, то такая соня — отличная для mba замена, потому что не хватает как раз только возможности оторвать клаву или завернуть ее за экран.
Кроме того, вы смотрели на библиотечку OM для React? Она правда на clojurescript и тянет за собой новую кухню, но код получается очень лаконичный.