Я новичок в Entity Framework 4.0, использую его с C # и в настоящее время экспериментирую с его функциями.
Что я заметил, так это то, что, как и в большинстве подобных ORM, он использует объект Context для работы сманипулирование данными и генерация операторов CRUD для сгенерированных объектов.
Это означает, что если я хочу сохранить изменения обратно в базу данных, мне всегда нужно иметь доступ к ссылке на ObjectContext.который создал экземпляры сущностей.
Это нормально, и все, если контекст был создан в доступной области (такой же метод, например), но что если я передам сущность или набор сущностей методу ихотите этот метод сохранить изменения?Похоже, что единственный простой способ - передать ObjectContext вместе с параметрами.
Другое решение - поместить ObjectContext в какую-то глобальную переменную.Само собой разумеется, я нахожу проблемы стилевого оформления и удобства сопровождения для обоих этих подходов.
Короче говоря, лучший способ, который я могу себе представить, - это получить ссылку на ObjectContext из сущности или набора сущностей.Я знаю, что по умолчанию это невозможно.
Я нашел метод , показывающий добавление метода расширения для получения ObjectContext от объекта.Однако он работает только для сущностей со связями, и, по словам автора, вызов этого метода стоит дорого.
Я думал о том, возможно, изменить шаблон T4, чтобы добавить свойство Context ко всем моим сущностям и автоматически заполнить его для сущностей'instanciation.
Я уже однажды модифицировал шаблон T4, чтобы Entity Framework применяла максимальную длину в моих сгенерированных классах (следуя книге Джулии Лерман по программированию Entity Framework 4).Я не могу сказать, что мне действительно нравится синтаксис T4, но если это лучший / единственный способ, пусть будет так ...
Кто-нибудь уже сделал это, и что будет лучшим способом справиться с этими готовы поделиться своим шаблоном T4 или объяснить, какие из лучших частичных методов или событий можно использовать для достижения цели?
Есть ли какие-либо серьезные недостатки в использовании такого подхода?Я думаю, что наличие такого большого количества ссылок на ObjectContext может помешать / отсрочить его возможность повторного выбора GC, если некоторые из моих сущностей остаются в области видимости, но я фактически больше не использую ObjectContext.
Большое спасибо.