public void test_transaction_subscription_rollback() { using (var session = NHConfig.OpenSession()) using (var transaction = session.BeginTransaction()) { var beforeCommitExecuted = false; var afterCommitExecuted = false; // BeforeCommit wont be executed on rollback session.Subscribe(o => o.Transaction .BeforeCommit(s => { Assert.AreEqual(session, s); Assert.IsTrue(s.Transaction.IsActive); beforeCommitExecuted = true; }) .AfterCommit((s, success) => { Assert.IsFalse(success); Assert.AreEqual(session, s); Assert.IsFalse(s.Transaction.IsActive); afterCommitExecuted = true; })); Assert.IsFalse(beforeCommitExecuted); Assert.IsFalse(afterCommitExecuted); transaction.Rollback(); Assert.IsFalse(beforeCommitExecuted); Assert.IsTrue(afterCommitExecuted); } }
public void batch_performance() { var keys = Enumerable.Range(1, 5000).ToList(); var batchSizes = new [] { 250, 1, 10, 50, 100, 250, 500, 1000 }; var coldStart = true; // skip the first time as the time is always higher foreach (var batchSize in batchSizes) { using (var session = NHConfig.OpenSession()) { var stats = session.SessionFactory.Statistics; var queryCount = stats.PrepareStatementCount; var stopwatch = new Stopwatch(); stopwatch.Start(); var models = session.BatchFetch <BatchModel, int>(keys, o => o.Id, batchSize); stopwatch.Stop(); if (coldStart) { coldStart = false; } else { Console.WriteLine($"Elapsed time for batch size {batchSize}: {stopwatch.ElapsedMilliseconds}ms"); } var expectedQueryCount = (int)Math.Ceiling(keys.Count / (decimal)batchSize); Assert.AreEqual(5000, models.Count); Assert.AreEqual(expectedQueryCount, stats.PrepareStatementCount - queryCount); foreach (var model in models) { Assert.IsTrue(keys.Contains(model.Id)); } } } }
public void deep_clone_filter() { EQBPerson clone; EQBPerson petra; using (var session = NHConfig.OpenSession()) { petra = session.Query <EQBPerson>() .Include(o => o.PreviouslyOwnedVehicles) .First(o => o.Name == "Petra"); clone = session.DeepClone(petra, o => o .ForType <EQBPerson>(t => t .ForMember(m => m.Name, m => m.Filter(n => n + "2")) .ForMember(m => m.PreviouslyOwnedVehicles, m => m .Filter(col => new HashSet <EQBVehicle>(col.Take(1))) ) )); } Assert.AreEqual("Petra2", clone.Name); Assert.IsNull(clone.BestFriend); Assert.IsNull(clone.IdentityCard); Assert.IsNull(clone.MarriedWith); Assert.AreEqual(0, clone.CurrentOwnedVehicles.Count); Assert.AreEqual(1, clone.PreviouslyOwnedVehicles.Count); }
public void batch_test_with_int_property() { var keys = new HashSet <int>(); var r = new Random(); for (var i = 0; i < 600; i++) { keys.Add(r.Next(1, 1200)); } using (var session = NHConfig.OpenSession()) { var stats = session.SessionFactory.Statistics; var queryCount = stats.PrepareStatementCount; var models = session.BatchFetch <BatchModel, int>(keys.ToList(), o => o.Id, 50); var expectedQueryCount = (int)Math.Ceiling(keys.Count / 50m); Assert.AreEqual(keys.Count, models.Count); Assert.AreEqual(expectedQueryCount, stats.PrepareStatementCount - queryCount); foreach (var model in models) { Assert.IsTrue(keys.Contains(model.Id)); } } }
public void deep_clone_references() { EQBPerson clone; EQBPerson petra; using (var session = NHConfig.OpenSession()) { petra = session.Query <EQBPerson>() .Include(o => o.BestFriend.IdentityCard) .Include(o => o.BestFriend.BestFriend) .First(o => o.Name == "Petra"); clone = session.DeepClone(petra); } Assert.AreEqual(petra.Id, clone.Id); Assert.IsNotNull(clone.BestFriend); Assert.IsNotNull(clone.BestFriend.IdentityCard); Assert.AreEqual(clone.BestFriend, clone.BestFriend.IdentityCard.Owner); Assert.IsNotNull(clone.BestFriend.BestFriend); Assert.IsNull(clone.BestFriend.BestFriend.BestFriend); Assert.IsNull(clone.IdentityCard); Assert.AreEqual(0, clone.OwnedHouses.Count); Assert.AreEqual(0, clone.CurrentOwnedVehicles.Count); }
public void deep_clone_without_identifier() { EQBPerson clone; using (var session = NHConfig.OpenSession()) { var petra = session.Query <EQBPerson>() .Include(o => o.IdentityCard) .Include(o => o.BestFriend.IdentityCard) .Include(o => o.CurrentOwnedVehicles.First().Wheels) .Include(o => o.CurrentOwnedVehicles.First().RoadworthyTests) .Include(o => o.CurrentOwnedVehicles.First().MileageHistory) .First(o => o.Name == "Petra"); clone = session.DeepClone(petra, o => o .CloneIdentifier(false)); } Assert.AreEqual(0, clone.Id); Assert.AreEqual(0, clone.IdentityCard.Id); Assert.AreEqual(0, clone.IdentityCard.Owner.Id); Assert.AreEqual(0, clone.BestFriend.Id); Assert.AreEqual(0, clone.BestFriend.IdentityCard.Id); Assert.AreEqual(1, clone.CurrentOwnedVehicles.Count); Assert.AreEqual(0, clone.CurrentOwnedVehicles.First().Id); Assert.AreEqual(0, clone.CurrentOwnedVehicles.First().CurrentOwner.Id); Assert.AreEqual(4, clone.CurrentOwnedVehicles.First().Wheels.Count); Assert.AreEqual(0, clone.CurrentOwnedVehicles.First().Wheels.First().Id); Assert.AreEqual(0, clone.CurrentOwnedVehicles.First().Wheels.First().Vehicle.Id); Assert.AreEqual(2, clone.CurrentOwnedVehicles.First().RoadworthyTests.Count); Assert.AreEqual(0, clone.CurrentOwnedVehicles.First().RoadworthyTests.First().Value.Id); Assert.AreEqual(0, clone.CurrentOwnedVehicles.First().RoadworthyTests.First().Value.Vehicle.Id); }
public void using_then_include() { EQBPerson petra; using (var session = NHConfig.OpenSession()) { var stats = session.SessionFactory.Statistics; stats.Clear(); var future = session.Query <EQBPerson>() .Include(o => o.BestFriend.IdentityCard) .Include(o => o.BestFriend.BestFriend.BestFriend.BestFriend) .Include(o => o.CurrentOwnedVehicles).ThenInclude(o => o.Wheels) .Include(o => o.CurrentOwnedVehicles).ThenInclude(o => o.RoadworthyTests) .Include(o => o.CurrentOwnedVehicles).ThenInclude(o => o.MileageHistory) .Include(o => o.DrivingLicence) .Include(o => o.CreatedBy) .Include(o => o.IdentityCard) .Include(o => o.MarriedWith) .Include(o => o.OwnedHouses) .Include(o => o.PreviouslyOwnedVehicles) .Where(o => o.Name == "Petra") .ToFutureValue(); petra = future.Value; CheckStatistics(stats, 5); } ValidateGetEntityResult(petra); }
public void deep_clone_with_skip_entity_types() { EQBPerson clone; EQBPerson petra; using (var session = NHConfig.OpenSession()) { petra = session.Query <EQBPerson>() .Include(o => o.IdentityCard) .Include(o => o.BestFriend.IdentityCard) .Include(o => o.CurrentOwnedVehicles.First().Wheels) .Include(o => o.CurrentOwnedVehicles.First().RoadworthyTests) .Include(o => o.CurrentOwnedVehicles.First().MileageHistory) .First(o => o.Name == "Petra"); clone = session.DeepClone(petra, o => o .SkipEntityTypes()); } Assert.IsNull(clone.IdentityCard); Assert.IsNull(clone.BestFriend); Assert.AreEqual(1, clone.CurrentOwnedVehicles.Count); Assert.IsNull(clone.CurrentOwnedVehicles.First().CurrentOwner); Assert.AreEqual(4, clone.CurrentOwnedVehicles.First().Wheels.Count); Assert.IsNull(clone.CurrentOwnedVehicles.First().Wheels.First().Vehicle); Assert.AreEqual(2, clone.CurrentOwnedVehicles.First().RoadworthyTests.Count); Assert.IsNull(clone.CurrentOwnedVehicles.First().RoadworthyTests.First().Value.Vehicle); Assert.AreEqual(2, clone.CurrentOwnedVehicles.First().MileageHistory.Count); Assert.IsNotNull(clone.CurrentOwnedVehicles.First().MileageHistory[new DateTime(2010, 1, 1)]); }
public void deep_clone_collections() { EQBPerson clone; EQBPerson petra; using (var session = NHConfig.OpenSession()) { petra = session.Query <EQBPerson>() .Include(o => o.CurrentOwnedVehicles.First().Wheels) .Include(o => o.CurrentOwnedVehicles.First().RoadworthyTests) .Include(o => o.CurrentOwnedVehicles.First().MileageHistory) .Include(o => o.PreviouslyOwnedVehicles) .First(o => o.Name == "Petra"); clone = session.DeepClone(petra); } Assert.IsNull(clone.BestFriend); Assert.IsNull(clone.IdentityCard); Assert.IsNull(clone.MarriedWith); Assert.AreEqual(1, clone.CurrentOwnedVehicles.Count); Assert.AreEqual(clone, clone.CurrentOwnedVehicles.First().CurrentOwner); Assert.AreEqual(4, clone.CurrentOwnedVehicles.First().Wheels.Count); Assert.AreEqual(clone.CurrentOwnedVehicles.First(), clone.CurrentOwnedVehicles.First().Wheels.First().Vehicle); Assert.AreEqual(2, clone.CurrentOwnedVehicles.First().RoadworthyTests.Count); Assert.AreEqual(clone.CurrentOwnedVehicles.First(), clone.CurrentOwnedVehicles.First().RoadworthyTests[new DateTime(2009, 2, 1)].Vehicle); Assert.AreEqual(2, clone.CurrentOwnedVehicles.First().MileageHistory.Count); Assert.AreEqual(5000, clone.CurrentOwnedVehicles.First().MileageHistory[new DateTime(2010, 1, 1)]); Assert.AreEqual(2, clone.PreviouslyOwnedVehicles.Count); Assert.AreEqual(clone, clone.CurrentOwnedVehicles.First().CurrentOwner); }
public async Task get_single_result_without_skip_or_take_with_first_async() { EQBPerson petra; using (var session = NHConfig.OpenSession()) { var stats = session.SessionFactory.Statistics; stats.Clear(); petra = await session.Query <EQBPerson>() .Include(o => o.BestFriend.IdentityCard) .Include(o => o.BestFriend.BestFriend.BestFriend.BestFriend) .Include(o => o.CurrentOwnedVehicles.First().Wheels) .Include(o => o.CurrentOwnedVehicles.First().RoadworthyTests) .Include(o => o.CurrentOwnedVehicles.First().MileageHistory) .Include(o => o.DrivingLicence) .Include(o => o.CreatedBy) .Include(o => o.IdentityCard) .Include(o => o.MarriedWith) .Include(o => o.OwnedHouses) .Include(o => o.PreviouslyOwnedVehicles) .Where(o => o.Name == "Petra") .FirstAsync(); CheckStatistics(stats, 5); } ValidateGetEntityResult(petra); }
public void deep_clone_simple_properties() { EQBPerson clone; EQBPerson petra; using (var session = NHConfig.OpenSession()) { petra = session.Query <EQBPerson>() .First(o => o.Name == "Petra"); clone = session.DeepClone(petra, o => o .ForType <EQBPerson>(t => t.ForMember(m => m.Name, opts => opts.Ignore()) )); // Lazy load some relations after cloning var friend = petra.BestFriend; var card = petra.IdentityCard; } Assert.AreEqual(petra.Id, clone.Id); Assert.AreEqual(null, clone.Name); Assert.AreEqual(petra.LastName, clone.LastName); Assert.IsNotNull(petra.BestFriend); Assert.IsNotNull(petra.IdentityCard); Assert.IsNull(clone.MarriedWith); Assert.IsNull(clone.BestFriend); Assert.IsNull(clone.IdentityCard); Assert.AreEqual(0, clone.OwnedHouses.Count); Assert.AreEqual(0, clone.CurrentOwnedVehicles.Count); }
public void using_skip_and_take() { /*NHibernate way*/ using (var session = NHConfig.OpenSession()) { var subQuery = session.Query <EQBPerson>() .Skip(0) .Take(10); var query = session.Query <EQBPerson>() .Fetch(o => o.BestFriend) .ThenFetch(o => o.IdentityCard) .Fetch(o => o.BestFriend) .ThenFetch(o => o.BestFriend) .ThenFetch(o => o.BestFriend) .ThenFetch(o => o.BestFriend) .FetchMany(o => o.CurrentOwnedVehicles) .ThenFetchMany(o => o.Wheels) .FetchMany(o => o.CurrentOwnedVehicles) .ThenFetchMany(o => o.RoadworthyTests) .FetchMany(o => o.CurrentOwnedVehicles) .ThenFetchMany(o => o.MileageHistory) .Fetch(o => o.DrivingLicence) .Fetch(o => o.IdentityCard) .Fetch(o => o.MarriedWith) .Where(o => subQuery.Contains(o)) .ToFuture(); session.Query <EQBPerson>() .FetchMany(o => o.OwnedHouses) .Where(o => subQuery.Contains(o)) .ToFuture(); session.Query <EQBPerson>() .FetchMany(o => o.PreviouslyOwnedVehicles) .Where(o => subQuery.Contains(o)) .ToFuture(); Assert.AreEqual(4, query.ToList().Count); } using (var session = NHConfig.OpenSession()) { var test = session.Query <EQBPerson>() .Skip(0) .Take(10) .Include(o => o.BestFriend.IdentityCard) .Include(o => o.BestFriend.BestFriend.BestFriend.BestFriend) .Include(o => o.CurrentOwnedVehicles) .Include(o => o.CurrentOwnedVehicles).ThenInclude(o => o.Wheels) .Include(o => o.CurrentOwnedVehicles).ThenInclude(o => o.RoadworthyTests) .Include(o => o.CurrentOwnedVehicles).ThenInclude(o => o.MileageHistory) .Include(o => o.DrivingLicence) .Include(o => o.IdentityCard) .Include(o => o.MarriedWith) .Include(o => o.OwnedHouses) .Include(o => o.PreviouslyOwnedVehicles) .ToList(); Assert.AreEqual(4, test.Count); } }
public void test_include_with_collection() { EQBPerson petra; /*Without parameter*/ using (var session = NHConfig.OpenSession()) { var stats = session.SessionFactory.Statistics; stats.Clear(); petra = session.Query <EQBPerson>() .Include(o => o.PreviouslyOwnedVehicles) .Single(o => o.Name == "Petra"); CheckStatistics(stats, 1); } }
public void test_include_with_interface() { EQBPerson petra; /*Without parameter*/ using (var session = NHConfig.OpenSession()) { var stats = session.SessionFactory.Statistics; stats.Clear(); petra = session.Query <EQBPerson>() .Include(o => o.CreatedBy) .Single(o => o.Name == "Petra"); CheckStatistics(stats, 1); } Assert.AreEqual("System", petra.CreatedBy.UserName); }
public void immutable() { using (var session = NHConfig.OpenSession()) { var query = session.Query <EQBPerson>().Include(o => o.BestFriend); Assert.AreEqual(typeof(IncludeQueryProvider), query.Provider.GetType()); Assert.AreNotEqual(query.Provider, query.Include(o => o.DrivingLicence).Provider); Assert.AreNotEqual(query.Provider, query.Include(o => o.CurrentOwnedVehicles).Provider); Assert.AreNotEqual(query.Provider, query.Include("DrivingLicence").Provider); Assert.AreNotEqual(query.Provider, ((IQueryable)query).Include("DrivingLicence").Provider); var includeQuery = query.Include(o => o.CurrentOwnedVehicles); Assert.AreNotEqual(includeQuery.Provider, includeQuery.ThenInclude(o => o.CurrentOwner).Provider); Assert.AreNotEqual(includeQuery.Provider, includeQuery.ThenInclude(o => o.PreviousUsers).Provider); } }
public void test_cast_to_base_type_relation() { IPerson petra; /*Without parameter*/ using (var session = NHConfig.OpenSession()) { var stats = session.SessionFactory.Statistics; stats.Clear(); var query = session.Query <EQBPerson>() .Where(o => o.Name == "Petra") as IQueryable; petra = query .Include("CurrentOwnedVehicles") .ToList <IPerson>().First(); CheckStatistics(stats, 1); } Assert.AreEqual(petra.CurrentOwnedVehicles.Any(), true); }
public void test_selectmany() { IPerson petra; /*Without parameter*/ using (var session = NHConfig.OpenSession()) { var stats = session.SessionFactory.Statistics; stats.Clear(); var query = session.Query <EQBIdentityCard>() .Where(o => o.Code == "SD") .Fetch(o => o.Owner).ThenFetch(o => o.BestFriend).ThenFetch(o => o.MarriedWith) //.Select(o => o.Owner) .ToList(); Assert.AreEqual(1, stats.PrepareStatementCount); } //Assert.AreEqual("System", petra.CreatedBy.UserName); }
public async Task using_first_async_method_for_retriving_a_person_that_dont_exists() { EQBPerson test; using (var session = NHConfig.OpenSession()) { test = await session.Query <EQBPerson>() .Include(o => o.BestFriend.IdentityCard) .Include(o => o.BestFriend.BestFriend.BestFriend.BestFriend) .Include(o => o.CurrentOwnedVehicles.First().Wheels) .Include(o => o.CurrentOwnedVehicles.First().RoadworthyTests) .Include(o => o.DrivingLicence) .Include(o => o.IdentityCard) .Include(o => o.MarriedWith) .Include(o => o.OwnedHouses) .Include(o => o.PreviouslyOwnedVehicles) .FirstAsync(o => o.Name == "Test"); } }
public void collections_with_same_prefix() { EQBPerson person; using (var session = NHConfig.OpenSession()) { var stats = session.SessionFactory.Statistics; stats.Clear(); person = session.Query <EQBPerson>() .Include(o => o.CurrentOwnedVehicles) .Include(o => o.CurrentOwnedVehiclesOld) .FirstOrDefault(o => o.Name == "Petra"); CheckStatistics(stats, 2); } Assert.IsNotNull(person); Assert.AreEqual(1, person.CurrentOwnedVehicles.Count); }
public void batch_test_select_anonymous_type() { var keys = Enumerable.Range(1, 600).ToList(); using (var session = NHConfig.OpenSession()) { var stats = session.SessionFactory.Statistics; var queryCount = stats.PrepareStatementCount; var models = session.BatchFetch <BatchModel>(50) .SetKeys(keys, o => o.Id) .BeforeQueryExecution(q => q.Where(o => o.Id > 400)) .Select(o => new { o.Name }) .Execute(); var expectedQueryCount = (int)Math.Ceiling(keys.Count / 50m); Assert.AreEqual(200, models.Count); Assert.AreEqual(expectedQueryCount, stats.PrepareStatementCount - queryCount); } }
public void test_cast_to_base_type() { IPerson petra; /*Without parameter*/ using (var session = NHConfig.OpenSession()) { var stats = session.SessionFactory.Statistics; stats.Clear(); var query = session.Query <EQBPerson>() as IQueryable <IPerson>; petra = query .Include("CreatedBy") .Where(o => o.Name == "Petra") .First(); CheckStatistics(stats, 1); } Assert.IsNotNull(petra); Assert.AreEqual("System", petra.CreatedBy.UserName); }
public void batch_test_with_filter() { var keys = Enumerable.Range(1, 600).ToList(); using (var session = NHConfig.OpenSession()) { var stats = session.SessionFactory.Statistics; var queryCount = stats.PrepareStatementCount; var models = session.BatchFetch <BatchModel, int>(keys, o => o.Id, 50, q => q.Where(o => o.Id > 400)); var expectedQueryCount = (int)Math.Ceiling(keys.Count / 50m); Assert.AreEqual(200, models.Count); Assert.AreEqual(expectedQueryCount, stats.PrepareStatementCount - queryCount); foreach (var model in models) { Assert.IsTrue(keys.Contains(model.Id)); } } }
public void using_tofutorevalue_method_for_retriving_a_person_that_dont_exists() { EQBPerson test; using (var session = NHConfig.OpenSession()) { test = session.Query <EQBPerson>() .Include(o => o.BestFriend.IdentityCard) .Include(o => o.BestFriend.BestFriend.BestFriend.BestFriend) .Include(o => o.CurrentOwnedVehicles.First().Wheels) .Include(o => o.CurrentOwnedVehicles.First().RoadworthyTests) .Include(o => o.DrivingLicence) .Include(o => o.IdentityCard) .Include(o => o.MarriedWith) .Include(o => o.OwnedHouses) .Include(o => o.PreviouslyOwnedVehicles) .Where(o => o.Name == "Test") .ToFutureValue().Value; } Assert.IsNull(test); }
public async Task using_skip_and_take_async() { using (var session = NHConfig.OpenSession()) { var test = await session.Query <EQBPerson>() .Skip(0) .Take(10) .Include(o => o.BestFriend.IdentityCard) .Include(o => o.BestFriend.BestFriend.BestFriend.BestFriend) .Include(o => o.CurrentOwnedVehicles.First().Wheels) .Include(o => o.CurrentOwnedVehicles.First().RoadworthyTests) .Include(o => o.DrivingLicence) .Include(o => o.IdentityCard) .Include(o => o.MarriedWith) .Include(o => o.OwnedHouses) .Include(o => o.PreviouslyOwnedVehicles) .ToListAsync(); Assert.AreEqual(4, test.Count); } }
public void using_count_method() { using (var session = NHConfig.OpenSession()) { var query = session.Query <EQBPerson>() .Include(o => o.BestFriend.IdentityCard) .Include(o => o.BestFriend.BestFriend.BestFriend.BestFriend) .Include(o => o.CurrentOwnedVehicles.First().Wheels) .Include(o => o.CurrentOwnedVehicles.First().RoadworthyTests) .Include(o => o.DrivingLicence) .Include(o => o.IdentityCard) .Include(o => o.MarriedWith) .Include(o => o.OwnedHouses) .Include(o => o.PreviouslyOwnedVehicles); var total = query.Count(); Assert.AreEqual(4, total); var people = query.ToList(); Assert.AreEqual(4, people.Count); } }
public async Task using_to_future_value_async_method_without_getting_value() { EQBPerson test; using (var session = NHConfig.OpenSession()) { var test2 = session.Query <EQBPerson>() .Include(o => o.BestFriend.IdentityCard) .Include(o => o.BestFriend.BestFriend.BestFriend.BestFriend) .Include(o => o.CurrentOwnedVehicles.First().Wheels) .Include(o => o.CurrentOwnedVehicles.First().RoadworthyTests) .Include(o => o.DrivingLicence) .Include(o => o.IdentityCard) .Include(o => o.MarriedWith) .Include(o => o.OwnedHouses) .Include(o => o.PreviouslyOwnedVehicles) .Where(o => o.Name == "Test") .ToFutureValue(); test = await test2.GetValueAsync(); } Assert.IsNull(test); }
public void deep_clone_as_reference_and_ignore_properties_identifiers() { EQBPerson clone; EQBPerson petra; using (var session = NHConfig.OpenSession()) { petra = session.Query <EQBPerson>() .Include(o => o.IdentityCard) .First(o => o.Name == "Petra"); clone = session.DeepClone(petra, o => o .ForType <EQBPerson>(t => t .ForMember(m => m.Name, opts => opts.Ignore()) .CloneIdentifier(false) ) .CloneIdentifier(true) .CanCloneAsReference(type => type == typeof(EQBIdentityCard)) ); } Assert.AreEqual(default(int), clone.Id); Assert.IsNull(clone.Name); Assert.AreEqual(petra.LastName, clone.LastName); Assert.AreEqual(petra.IdentityCard, clone.IdentityCard); }
protected void FillData() { var system = new EQBUser { UserName = "******" }; var ana = new EQBPerson { Age = 23, Name = "Ana", CreatedBy = system }; var rok = new EQBPerson { Age = 24, Name = "Rok", CreatedBy = system }; var simon = new EQBPerson { Age = 25, Name = "Simon", CreatedBy = system }; var petra = new EQBPerson { Age = 22, Name = "Petra", CreatedBy = system }; //Setting best friends petra.BestFriend = ana; ana.BestFriend = simon; simon.BestFriend = rok; rok.BestFriend = petra; //Setting Identity card ana.IdentityCard = new EQBIdentityCard { Code = "1", Owner = ana }; ana.Identity = new EQBIdentity { Code = "1", Owner = ana }; rok.IdentityCard = new EQBIdentityCard { Code = "2", Owner = rok }; rok.Identity = new EQBIdentity { Code = "2", Owner = rok }; simon.IdentityCard = new EQBIdentityCard { Code = "3", Owner = simon }; simon.Identity = new EQBIdentity { Code = "3", Owner = simon }; petra.IdentityCard = new EQBIdentityCard { Code = "4", Owner = petra }; petra.Identity = new EQBIdentity { Code = "4", Owner = petra }; //Setting Driving licence rok.DrivingLicence = new EQBDrivingLicence { Code = "1", Owner = rok }; simon.DrivingLicence = new EQBDrivingLicence { Code = "2", Owner = simon }; petra.DrivingLicence = new EQBDrivingLicence { Code = "3", Owner = petra }; //Setting MerriedWith rok.MarriedWith = ana; ana.MarriedWith = rok; petra.MarriedWith = simon; simon.MarriedWith = petra; //Setting Vehicles var ferrari = new EQBVehicle { BuildYear = 2002, Model = "Ferrari" }; ferrari.Wheels.Add(new TestEQBWheel { Diameter = 45, Width = 320, Vehicle = ferrari }); ferrari.Wheels.Add(new TestEQBWheel { Diameter = 45, Width = 320, Vehicle = ferrari }); ferrari.Wheels.Add(new TestEQBWheel { Diameter = 45, Width = 260, Vehicle = ferrari }); ferrari.Wheels.Add(new TestEQBWheel { Diameter = 45, Width = 260, Vehicle = ferrari }); ferrari.RoadworthyTests.Add( new DateTime(2002, 2, 1), new EQBRoadworthyTest { Vehicle = ferrari, TestDate = new DateTime(2002, 2, 1), Passed = true, Comments = "I like the shade of red." }); ferrari.MileageHistory.Add(new DateTime(2002, 1, 1), 0); ferrari.MileageHistory.Add(new DateTime(2006, 1, 1), 60000); ferrari.MileageHistory.Add(new DateTime(2010, 1, 1), 100000); var audi = new EQBVehicle { BuildYear = 2009, Model = "Audi" }; audi.Wheels.Add(new TestEQBWheel { Diameter = 45, Width = 235, Vehicle = audi }); audi.Wheels.Add(new TestEQBWheel { Diameter = 45, Width = 235, Vehicle = audi }); audi.Wheels.Add(new TestEQBWheel { Diameter = 45, Width = 235, Vehicle = audi }); audi.Wheels.Add(new TestEQBWheel { Diameter = 45, Width = 235, Vehicle = audi }); audi.RoadworthyTests.Add( new DateTime(2009, 2, 1), new EQBRoadworthyTest { Vehicle = audi, TestDate = new DateTime(2009, 2, 1), Passed = false, Comments = "Brakes failing." }); audi.RoadworthyTests.Add( new DateTime(2009, 3, 1), new EQBRoadworthyTest { Vehicle = audi, TestDate = new DateTime(2009, 3, 1), Passed = true, Comments = "All good now." }); audi.MileageHistory.Add(new DateTime(2009, 1, 1), 0); audi.MileageHistory.Add(new DateTime(2010, 1, 1), 5000); var bmw = new EQBVehicle { BuildYear = 1993, Model = "Bmw" }; bmw.Wheels.Add(new TestEQBWheel { Diameter = 45, Width = 205, Vehicle = bmw }); bmw.Wheels.Add(new TestEQBWheel { Diameter = 45, Width = 205, Vehicle = bmw }); bmw.Wheels.Add(new TestEQBWheel { Diameter = 45, Width = 205, Vehicle = bmw }); bmw.Wheels.Add(new TestEQBWheel { Diameter = 45, Width = 205, Vehicle = bmw }); // Deliberately no roadworthy tests or mileage history var vw = new EQBVehicle { BuildYear = 2002, Model = "Vw" }; vw.Wheels.Add(new TestEQBWheel { Diameter = 45, Width = 195, Vehicle = vw }); vw.Wheels.Add(new TestEQBWheel { Diameter = 45, Width = 195, Vehicle = vw }); vw.Wheels.Add(new TestEQBWheel { Diameter = 45, Width = 195, Vehicle = vw }); vw.Wheels.Add(new TestEQBWheel { Diameter = 45, Width = 195, Vehicle = vw }); vw.RoadworthyTests.Add( new DateTime(2002, 3, 1), new EQBRoadworthyTest { Vehicle = vw, TestDate = new DateTime(2002, 3, 1), Passed = true, Comments = "No problems." }); vw.MileageHistory.Add(new DateTime(2002, 1, 1), 0); vw.MileageHistory.Add(new DateTime(2015, 1, 1), 150000); petra.PreviouslyOwnedVehicles.Add(vw); petra.PreviouslyOwnedVehicles.Add(bmw); petra.CurrentOwnedVehicles.Add(audi); audi.CurrentOwner = petra; simon.PreviouslyOwnedVehicles.Add(bmw); simon.PreviouslyOwnedVehicles.Add(audi); simon.CurrentOwnedVehicles.Add(ferrari); ferrari.CurrentOwner = simon; //Setting Houses var house1 = new EQBHouse { Address = "Address1" }; var house2 = new EQBHouse { Address = "Address2" }; house1.Owners.Add(ana); ana.OwnedHouses.Add(house1); house1.Owners.Add(rok); rok.OwnedHouses.Add(house1); house2.Owners.Add(simon); simon.OwnedHouses.Add(house2); house2.Owners.Add(petra); petra.OwnedHouses.Add(house2); //Saving entities using (var session = NHConfig.OpenSession()) { session.Save(petra); session.Save(rok); session.Save(simon); session.Save(ana); session.Flush(); } }