public override void saveParents(IModelObject mo)
        {
            Employee thisMo = ( Employee)mo;

            //**** Parent Association:department
            if ((thisMo.PrDepartment != null) && (thisMo.PrDepartment.NeedsSave))
            {
                OracleMappers.DepartmentDBMapper mappervar = new OracleMappers.DepartmentDBMapper(this.dbConn);
                mappervar.save(thisMo.PrDepartment);
                thisMo.PrDepartmentId = thisMo.PrDepartment.PrDepartmentId;
            }
        }
    public void TestLoadAndSaveDepartment()
    {
        ModelContext.beginTrans();
        try {

            OracleMappers.DepartmentDBMapper pdb = new OracleMappers.DepartmentDBMapper();

            long count = pdb.RecordCount();

            if (pdb.SelectFromObjectName != pdb.ManagedTableName) {
                long countFromSelectObject = pdb.dbConn.getLngValue("select count(*) from " + pdb.SelectFromObjectName);
                Assert.AreEqual(count, countFromSelectObject,
                    "Count of records in managedTableName {0} and SelectFromObjectName {1} should be equal, as there needs to be exactly 1 to 1 match between records in managed table and selectFromObject.",
                    pdb.ManagedTableName, pdb.SelectFromObjectName);
            }

            if (count == 0) {
                Assert.Inconclusive("No Department in database, table is empty");
            } else {
                /**
                using (DataContext ctx = DBUtils.Current().dbContext()) {

                    var query = ctx.ExecuteQuery<Department>(@"SELECT * FROM " + pdb.SelectFromObjectName ).Skip(1).Take(1);
                    var lst = query.ToList();

                    Assert.AreEqual(lst.Count, 1, "Expected to receive 1 record, got: " + lst.Count);

                }
                todo: fix boolean fields by generating properties of original fields
                **/
                object pid  = ModelContext.CurrentDBUtils.getObjectValue("select top 1 " + pdb.pkFieldName + " from " + pdb.ManagedTableName);

                Department p = pdb.findByKey(pid);
                Department p2 = (Department)p.copy();

                //Test equality and hash codes
                Assert.AreEqual(p.GetHashCode(), p2.GetHashCode());
                Assert.AreEqual(p, p2);

                p.isDirty = true ; // force save
                pdb.save(p);

                // now reload object from database
                p = null;
                p = pdb.findByKey(pid);

                //test fields to be equal before and after save
                Assert.IsTrue(p.PrDepartmentId==p2.PrDepartmentId,"Expected Field DepartmentId to be equal");
                Assert.IsTrue(p.PrDepartmentName==p2.PrDepartmentName,"Expected Field DepartmentName to be equal");
                Assert.IsTrue(p.PrManagerId.GetValueOrDefault() ==p2.PrManagerId.GetValueOrDefault(),"Expected Field ManagerId to be equal");
                Assert.IsTrue(p.PrLocationId.GetValueOrDefault() ==p2.PrLocationId.GetValueOrDefault(),"Expected Field LocationId to be equal");
                Assert.IsTrue(p.CreateDate.GetValueOrDefault().ToString("MM/dd/yy H:mm:ss zzz") ==p2.CreateDate.GetValueOrDefault().ToString("MM/dd/yy H:mm:ss zzz"),"Expected Field CreateDate to be equal");
                Assert.IsFalse(p.UpdateDate.GetValueOrDefault() == p2.UpdateDate.GetValueOrDefault(),"Expected Field UpdateDate NOT to be equal");
                Assert.IsTrue(p.CreateUser==p2.CreateUser,"Expected Field CreateUser to be equal");
                //skip update user!

                p.isDirty = true; //to force save
                ModelContext.Current.saveModelObject(p);

                p = ModelContext.Current.loadModelObject< Department >(p.Id);
                p.loadObjectHierarchy();

                string json = JsonConvert.SerializeObject(p,Formatting.Indented,
                    new JsonSerializerSettings(){
                            ReferenceLoopHandling = ReferenceLoopHandling.Ignore
                        });
                System.IO.FileInfo jf = new System.IO.FileInfo(".\\Department.json");
                System.IO.File.WriteAllText(jf.FullName,json);

                if (pdb.isPrimaryKeyAutogenerated) {
                    p.isNew = true;
                    p.isDirty = true;

                    try {
                        pdb.save(p);
                    } catch (System.Exception e) {
                        Assert.IsTrue(e.Message.ToUpper().Contains("UNIQUE INDEX")||e.Message.Contains("Violation of UNIQUE KEY constraint"),
                            "Insert statement produced error other than violation of unique key:"+e.Message);

                    }
                }

            }

        } finally {
            ModelContext.rollbackTrans(); // 'Nothing should be saved to the database!
        }
    }
 public override void saveParents(IModelObject mo )
 {
     Employee thisMo  = ( Employee)mo;
     //**** Parent Association:department
     if ((thisMo.PrDepartment!=null) && (thisMo.PrDepartment.NeedsSave)) {
     OracleMappers.DepartmentDBMapper mappervar = new OracleMappers.DepartmentDBMapper(this.dbConn);
     mappervar.save(thisMo.PrDepartment);
     thisMo.PrDepartmentId = thisMo.PrDepartment.PrDepartmentId;
     }
 }