protected void PopulateInitialDataForNodes() { var configuration = BuildConfiguration(); ApplyCustomSettingsToInitialConfiguration(configuration); configuration.UpgradeMode = DomainUpgradeMode.Recreate; configuration.ShareStorageSchemaOverNodes = false; using (var domain = Domain.Build(configuration)) { var nodes = GetNodes(DomainUpgradeMode.Recreate); foreach (var storageNode in nodes.Where(n => n.NodeId != WellKnown.DefaultNodeId)) { _ = domain.StorageNodeManager.AddNode(storageNode); } map = new Dictionary <string, Dictionary <Type, Pair <string> > >(); foreach (var storageNode in nodes) { var typesMap = new Dictionary <Type, Pair <string> >(); var selectedNode = domain.StorageNodeManager.GetNode(storageNode.NodeId); using (var session = selectedNode.OpenSession()) using (var transaction = session.OpenTransaction()) { var type = typeof(model.Part1.TestEntity1); var pair = GetDatabaseAndSchemaForType(session, type); _ = new model.Part1.TestEntity1 { Text = session.StorageNodeId, DatabaseName = pair.First, SchemaName = pair.Second }; typesMap.Add(type, pair); type = typeof(model.Part2.TestEntity2); pair = GetDatabaseAndSchemaForType(session, typeof(model.Part2.TestEntity2)); _ = new model.Part2.TestEntity2 { Text = session.StorageNodeId, DatabaseName = pair.First, SchemaName = pair.Second }; typesMap.Add(type, pair); type = typeof(model.Part3.TestEntity3); pair = GetDatabaseAndSchemaForType(session, typeof(model.Part3.TestEntity3)); _ = new model.Part3.TestEntity3 { Text = session.StorageNodeId, DatabaseName = pair.First, SchemaName = pair.Second }; typesMap.Add(type, pair); type = typeof(model.Part4.TestEntity4); pair = GetDatabaseAndSchemaForType(session, typeof(model.Part4.TestEntity4)); _ = new model.Part4.TestEntity4 { Text = session.StorageNodeId, DatabaseName = pair.First, SchemaName = pair.Second }; typesMap.Add(type, pair); transaction.Complete(); } map.Add(storageNode.NodeId, typesMap); } } }
private Key[] Insert(Session session, int initialCountOfEntities) { var storageNodeId = session.StorageNodeId; Dictionary <Type, Pair <string> > typesMap; if (!map.TryGetValue(storageNodeId, out typesMap)) { throw new Exception(string.Format("Unknown node {0}. Probably you don't populate data", storageNodeId)); } var text = string.Format("{0}_new", storageNodeId); var a = new model.Part1.TestEntity1 { Text = text }; var databaseAndSchema = typesMap[a.GetType()]; a.DatabaseName = databaseAndSchema.First; a.SchemaName = databaseAndSchema.Second; session.SaveChanges(); Assert.That(session.Query.All <model.Part1.TestEntity1>().Count(), Is.EqualTo(initialCountOfEntities + 1)); a = session.Query.All <model.Part1.TestEntity1>().FirstOrDefault(e => e.Text == text && e.DatabaseName == databaseAndSchema.First && e.SchemaName == databaseAndSchema.Second); Assert.That(a, Is.Not.Null); var b = new model.Part2.TestEntity2 { Text = text }; databaseAndSchema = typesMap[b.GetType()]; b.DatabaseName = databaseAndSchema.First; b.SchemaName = databaseAndSchema.Second; session.SaveChanges(); Assert.That(session.Query.All <model.Part2.TestEntity2>().Count(), Is.EqualTo(initialCountOfEntities + 1)); b = session.Query.All <model.Part2.TestEntity2>().FirstOrDefault(e => e.Text == text && e.DatabaseName == databaseAndSchema.First && e.SchemaName == databaseAndSchema.Second); Assert.That(b, Is.Not.Null); var c = new model.Part3.TestEntity3 { Text = text }; databaseAndSchema = typesMap[c.GetType()]; c.DatabaseName = databaseAndSchema.First; c.SchemaName = databaseAndSchema.Second; session.SaveChanges(); Assert.That(session.Query.All <model.Part3.TestEntity3>().Count(), Is.EqualTo(initialCountOfEntities + 1)); c = session.Query.All <model.Part3.TestEntity3>().FirstOrDefault(e => e.Text == text && e.DatabaseName == databaseAndSchema.First && e.SchemaName == databaseAndSchema.Second); Assert.That(c, Is.Not.Null); var d = new model.Part4.TestEntity4 { Text = text }; databaseAndSchema = typesMap[d.GetType()]; d.DatabaseName = databaseAndSchema.First; d.SchemaName = databaseAndSchema.Second; session.SaveChanges(); Assert.That(session.Query.All <model.Part4.TestEntity4>().Count(), Is.EqualTo(initialCountOfEntities + 1)); d = session.Query.All <model.Part4.TestEntity4>().FirstOrDefault(e => e.Text == text && e.DatabaseName == databaseAndSchema.First && e.SchemaName == databaseAndSchema.Second); Assert.That(d, Is.Not.Null); return(new Key[] { a.Key, b.Key, c.Key, d.Key }); }