public void ShouldSaveExpenses() { new DatabaseTester().Clean(); var creator = new Employee("1", "1", "1", "1"); var assignee = new Employee("2", "2", "2", "2"); var report = new ExpenseReport(); report.Submitter = creator; report.Approver = assignee; report.Title = "foo"; report.Description = "bar"; report.ChangeStatus(ExpenseReportStatus.Approved); report.Number = "123"; report.AddExpense("howdy", 123.45m); using (ISession session = DataContext.GetTransactedSession()) { session.SaveOrUpdate(creator); session.SaveOrUpdate(assignee); session.SaveOrUpdate(report); session.Transaction.Commit(); } ExpenseReport rehydratedExpenseReport; using (ISession session2 = DataContext.GetTransactedSession()) { rehydratedExpenseReport = session2.Load <ExpenseReport>(report.Id); } Expense x = report.GetExpenses()[0]; Expense y = rehydratedExpenseReport.GetExpenses()[0]; Assert.That(x.Description, Is.EqualTo(y.Description)); Assert.That(x.Amount, Is.EqualTo(y.Amount)); }