public bool EnsureCreated() { var created = _cosmosClient.CreateDatabaseIfNotExists(); foreach (var entityType in _model.GetEntityTypes()) { created |= _cosmosClient.CreateContainerIfNotExists( entityType.GetCosmosContainerName(), entityType.GetCosmosPartitionKeyStoreName()); } if (created) { var updateAdapter = _updateAdapterFactory.Create(); foreach (var entityType in _model.GetEntityTypes()) { foreach (var targetSeed in entityType.GetSeedData()) { var entry = updateAdapter.CreateEntry(targetSeed, entityType); entry.EntityState = EntityState.Added; } } _database.SaveChanges(updateAdapter.GetEntriesToSave()); } return(created); }
/// <summary> /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to /// the same compatibility standards as public APIs. It may be changed or removed without notice in /// any release. You should only use it directly in your code with extreme caution and knowing that /// doing so can result in application failures when updating to a new Entity Framework Core release. /// </summary> public virtual bool EnsureCreated( IUpdateAdapterFactory updateAdapterFactory, IDiagnosticsLogger <DbLoggerCategory.Update> updateLogger) { lock (_lock) { var valuesSeeded = _tables == null; if (valuesSeeded) { // ReSharper disable once AssignmentIsFullyDiscarded _tables = CreateTables(); var updateAdapter = updateAdapterFactory.Create(); var entries = new List <IUpdateEntry>(); foreach (var entityType in updateAdapter.Model.GetEntityTypes()) { foreach (var targetSeed in entityType.GetSeedData()) { var entry = updateAdapter.CreateEntry(targetSeed, entityType); entry.EntityState = EntityState.Added; entries.Add(entry); } } ExecuteTransaction(entries, updateLogger); } return(valuesSeeded); } }