internal void Initialize() { if (WasInitialized) { return; } WasInitialized = true; if (ActualDbVersion > CurrentDbVersion) { // Updating of the database must be done in another connection, // otherwise the added entities first time will be retrieved from cache but not from the database. // It can lead to a state when calculated fields are not filled first time, // and when LazyLoading = false the entities will be full retrieved. // using (var db = Create()) { db.UpgradeDatabase(CurrentDbVersion, ActualDbVersion); db.Attach(new DbInfo { Name = DbInfo.DbVersionParam, Value = ActualDbVersion.ToString() }, CurrentDbVersion == 0); db.SaveChanges(); } } }
internal void Initialize() { if (WasInitialized) { return; } WasInitialized = true; if (ActualDbVersion > CurrentDbVersion) { // Обновление базы данных необходимо делать в другом подключении, // иначе добавленные объекты при первом обращении к БД возвращаются не из базы и не проксированные. // В частности это приводит к тому, что в первый раз вычислимые атрибуты этих объектов могут быть не заполнены, // а при LazyLoading = false могут быть возвращены объекты полностью. // using (var db = Create()) { db.UpgradeDatabase(CurrentDbVersion, ActualDbVersion); db.Attach(new DbInfo { Name = DbInfo.DbVersionParam, Value = ActualDbVersion.ToString() }, CurrentDbVersion == 0); db.SaveChanges(); } } }