Exemplo n.º 1
0
        private static void LoadFromDisk(IEnumerable <Entity> list, nHydrateModel model, DiskModelYaml diskModel)
        {
            #region Load other parameter/field information
            foreach (var entity in diskModel.Entities)
            {
                var item = list.FirstOrDefault(x => x.Id == entity.Id);
                if (item == null)
                {
                    item = new Entity(model.Partition, new PropertyAssignment[] { new PropertyAssignment(ElementFactory.IdPropertyAssignment, entity.Id) });
                    model.Entities.Add(item);
                }

                System.Windows.Forms.Application.DoEvents();

                #region Properties

                item.Name                   = entity.Name;
                item.AllowCreateAudit       = entity.AllowCreateAudit;
                item.AllowModifyAudit       = entity.AllowModifyAudit;
                item.AllowTimestamp         = entity.AllowTimestamp;
                item.CodeFacade             = entity.CodeFacade;
                item.Immutable              = entity.Immutable;
                item.IsAssociative          = entity.IsAssociative;
                item.GeneratesDoubleDerived = entity.GeneratesDoubleDerived;
                item.IsTenant               = entity.IsTenant;
                item.TypedEntity            = entity.TypedTable.Convert <TypedEntityConstants>();
                item.Schema                 = entity.Schema;
                item.Summary                = entity.Summary;

                #endregion

                #region Fields

                var nameList  = new List <string>();
                var loopIndex = 0;
                foreach (var fieldNode in entity.Fields)
                {
                    var field = item.Fields.FirstOrDefault(x => x.Id == fieldNode.Id);
                    if (field == null)
                    {
                        field = new Field(item.Partition, new PropertyAssignment[] { new PropertyAssignment(ElementFactory.IdPropertyAssignment, fieldNode.Id) });
                        item.Fields.Add(field);
                    }
                    field.Name       = fieldNode.Name;
                    field.CodeFacade = fieldNode.CodeFacade;
                    nameList.Add(field.Name.ToLower());
                    field.Nullable         = fieldNode.Nullable;
                    field.DataType         = fieldNode.Datatype.Convert <DataTypeConstants>();
                    field.Identity         = fieldNode.Identity.Convert <IdentityTypeConstants>();
                    field.DataFormatString = fieldNode.DataFormatString;
                    field.Default          = fieldNode.Default;
                    field.DefaultIsFunc    = fieldNode.DefaultIsFunc;
                    field.Formula          = fieldNode.Formula;
                    field.IsIndexed        = fieldNode.IsIndexed;
                    field.IsPrimaryKey     = fieldNode.IsPrimaryKey;
                    field.IsCalculated     = fieldNode.IsCalculated;
                    field.IsUnique         = fieldNode.IsUnique;
                    field.Length           = fieldNode.Length;
                    field.Scale            = fieldNode.Scale;
                    field.SortOrder        = loopIndex++;
                    field.IsReadOnly       = fieldNode.IsReadonly;
                    field.Obsolete         = fieldNode.Obsolete;
                    field.Summary          = fieldNode.Summary;
                }
                if (item.Fields.Remove(x => !nameList.Contains(x.Name.ToLower())) > 0)
                {
                    item.nHydrateModel.IsDirty = true;
                }

                #endregion

                LoadEntityIndexes(item, diskModel);

                //Order fields (skip for model that did not have sort order when saved)
                var fc = new FieldOrderComparer();
                if (item.Fields.Count(x => x.SortOrder > 0) > 0)
                {
                    item.Fields.Sort(fc.Compare);
                }
            }

            //Must load relations AFTER ALL entities are loaded
            foreach (var item in model.Entities)
            {
                LoadEntityRelations(item, diskModel);
                LoadEntityStaticData(item, diskModel);
            }

            #endregion
        }
Exemplo n.º 2
0
        private static void LoadFromDisk(IEnumerable<Entity> list, nHydrateModel model, string rootFolder, Microsoft.VisualStudio.Modeling.Store store)
        {
            var folder = Path.Combine(rootFolder, FOLDER_ET);
            if (!Directory.Exists(folder)) return;

            #region Load other parameter/field information
            var fList = Directory.GetFiles(folder, "*.configuration.xml");
            foreach (var f in fList)
            {
                var document = new XmlDocument();
                try
                {
                    document.Load(f);
                }
                catch (Exception ex)
                {
                    //Do Nothing
                    MessageBox.Show("The file '" + f + "' is not valid and could not be loaded!", "Load Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

                var fi = new FileInfo(f);
                var name = fi.Name.Substring(0, fi.Name.Length - ".configuration.xml".Length).ToLower();
                var itemID = XmlHelper.GetAttributeValue(document.DocumentElement, "id", Guid.Empty);
                var item = list.FirstOrDefault(x => x.Id == itemID);
                if (item == null)
                {
                    item = new Entity(model.Partition, new PropertyAssignment[] { new PropertyAssignment(ElementFactory.IdPropertyAssignment, XmlHelper.GetAttributeValue(document.DocumentElement, "id", Guid.NewGuid())) });
                    model.Entities.Add(item);
                }

                System.Windows.Forms.Application.DoEvents();

                #region Properties

                item.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(FieldParameter_PropertyChanged);
                item.Name = XmlHelper.GetAttributeValue(document.DocumentElement, "name", item.Name);
                item.AllowAuditTracking = XmlHelper.GetAttributeValue(document.DocumentElement, "allowaudittracking", item.AllowAuditTracking);
                item.AllowCreateAudit = XmlHelper.GetAttributeValue(document.DocumentElement, "allowcreateaudit", item.AllowCreateAudit);
                item.AllowModifyAudit = XmlHelper.GetAttributeValue(document.DocumentElement, "allowmodifyaudit", item.AllowModifyAudit);
                item.AllowTimestamp = XmlHelper.GetAttributeValue(document.DocumentElement, "allowtimestamp", item.AllowTimestamp);
                item.CodeFacade = XmlHelper.GetAttributeValue(document.DocumentElement, "codefacade", item.CodeFacade);
                item.Immutable = XmlHelper.GetAttributeValue(document.DocumentElement, "immutable", item.Immutable);
                item.EnforcePrimaryKey = XmlHelper.GetAttributeValue(document.DocumentElement, "enforceprimarykey", item.EnforcePrimaryKey);
                item.IsAssociative = XmlHelper.GetAttributeValue(document.DocumentElement, "isassociative", item.IsAssociative);
                item.GeneratesDoubleDerived = XmlHelper.GetAttributeValue(document.DocumentElement, "generatesdoublederived", item.GeneratesDoubleDerived);
                item.IsGenerated = XmlHelper.GetAttributeValue(document.DocumentElement, "isgenerated", item.IsGenerated);
                item.IsTenant = XmlHelper.GetAttributeValue(document.DocumentElement, "isTenant", item.IsTenant);

                var tev = XmlHelper.GetAttributeValue(document.DocumentElement, "typedentity", item.TypedEntity.ToString());
                TypedEntityConstants te;
                if (Enum.TryParse<TypedEntityConstants>(tev, true, out te))
                    item.TypedEntity = te;

                item.Schema = XmlHelper.GetAttributeValue(document.DocumentElement, "schema", item.Schema);
                item.Summary = XmlHelper.GetNodeValue(document.DocumentElement, "summary", item.Summary);
                item.PropertyChanged -= new System.ComponentModel.PropertyChangedEventHandler(FieldParameter_PropertyChanged);

                #endregion

                #region Fields

                var fieldsNodes = document.DocumentElement.SelectSingleNode("//fieldset");
                if (fieldsNodes != null)
                {
                    var nameList = new List<string>();
                    foreach (XmlNode n in fieldsNodes.ChildNodes)
                    {
                        var subItemID = XmlHelper.GetAttributeValue(n, "id", Guid.Empty);
                        var field = item.Fields.FirstOrDefault(x => x.Id == subItemID);
                        if (field == null)
                        {
                            field = new Field(item.Partition, new PropertyAssignment[] { new PropertyAssignment(ElementFactory.IdPropertyAssignment, XmlHelper.GetAttributeValue(n, "id", Guid.NewGuid())) });
                            item.Fields.Add(field);
                        }
                        field.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(FieldParameter_PropertyChanged);
                        field.Name = XmlHelper.GetAttributeValue(n, "name", string.Empty);
                        field.CodeFacade = XmlHelper.GetAttributeValue(n, "codefacade", field.CodeFacade);
                        nameList.Add(field.Name.ToLower());
                        field.Nullable = XmlHelper.GetAttributeValue(n, "nullable", field.Nullable);

                        var dtv = XmlHelper.GetAttributeValue(n, "datatype", field.DataType.ToString());
                        DataTypeConstants dt;
                        if (Enum.TryParse<DataTypeConstants>(dtv, true, out dt))
                            field.DataType = dt;

                        var itv = XmlHelper.GetAttributeValue(n, "identity", field.Identity.ToString());
                        IdentityTypeConstants it;
                        if (Enum.TryParse<IdentityTypeConstants>(itv, true, out it))
                            field.Identity = it;

                        field.DataFormatString = XmlHelper.GetNodeValue(n, "dataformatstring", field.DataFormatString);
                        field.Default = XmlHelper.GetAttributeValue(n, "default", field.Default);
                        field.DefaultIsFunc = XmlHelper.GetAttributeValue(n, "defaultisfunc", field.DefaultIsFunc);
                        field.Formula = XmlHelper.GetAttributeValue(n, "formula", field.Formula);
                        field.IsGenerated = XmlHelper.GetAttributeValue(n, "isgenerated", field.IsGenerated);
                        field.IsIndexed = XmlHelper.GetAttributeValue(n, "isindexed", field.IsIndexed);
                        field.IsPrimaryKey = XmlHelper.GetAttributeValue(n, "isprimarykey", field.IsPrimaryKey);
                        field.IsCalculated = XmlHelper.GetAttributeValue(n, "Iscalculated", field.IsCalculated);
                        field.IsUnique = XmlHelper.GetAttributeValue(n, "isunique", field.IsUnique);
                        field.Length = XmlHelper.GetAttributeValue(n, "length", field.Length);
                        field.Scale = XmlHelper.GetAttributeValue(n, "scale", field.Scale);
                        field.SortOrder = XmlHelper.GetAttributeValue(n, "sortorder", field.SortOrder);
                        field.IsReadOnly = XmlHelper.GetAttributeValue(n, "isreadonly", field.IsReadOnly);
                        field.Category = XmlHelper.GetAttributeValue(n, "category", field.Category);
                        field.Collate = XmlHelper.GetAttributeValue(n, "collate", field.Collate);
                        field.FriendlyName = XmlHelper.GetAttributeValue(n, "friendlyname", field.FriendlyName);
                        field.IsBrowsable = XmlHelper.GetAttributeValue(n, "isbrowsable", field.IsBrowsable);
                        field.Max = XmlHelper.GetAttributeValue(n, "max", field.Max);
                        field.Min = XmlHelper.GetAttributeValue(n, "min", field.Min);
                        field.ValidationExpression = XmlHelper.GetAttributeValue(n, "validationexpression", field.ValidationExpression);
                        field.Obsolete = XmlHelper.GetAttributeValue(n, "obsolete", field.Obsolete);
                        field.Summary = XmlHelper.GetNodeValue(n, "summary", field.Summary);
                        field.PropertyChanged -= new System.ComponentModel.PropertyChangedEventHandler(FieldParameter_PropertyChanged);
                    }
                    if (item.Fields.Remove(x => !nameList.Contains(x.Name.ToLower())) > 0)
                        item.nHydrateModel.IsDirty = true;
                }

                #endregion

                #region Security

                var secNode = document.DocumentElement.SelectSingleNode("//security");
                if (secNode != null)
                {
                    var secItemID = XmlHelper.GetAttributeValue(secNode, "id", Guid.NewGuid());
                    var secFunction = new SecurityFunction(item.Partition, new PropertyAssignment[] { new PropertyAssignment(ElementFactory.IdPropertyAssignment, XmlHelper.GetAttributeValue(secNode, "id", secItemID)) });
                    item.SecurityFunction = secFunction;
                    item.SecurityFunction.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(FieldParameter_PropertyChanged);
                    item.SecurityFunction.PropertyChanged -= new System.ComponentModel.PropertyChangedEventHandler(FieldParameter_PropertyChanged);

                    var ff = Path.Combine(folder, item.Name + ".security.sql");
                    if (File.Exists(ff))
                        item.SecurityFunction.SQL = File.ReadAllText(ff);

                    //Parameters
                    var parametersNodes = secNode.SelectSingleNode("//parameterset");
                    if (parametersNodes != null)
                    {
                        var nameList = new List<string>();
                        foreach (XmlNode n in parametersNodes.ChildNodes)
                        {
                            var subItemID = XmlHelper.GetAttributeValue(n, "id", Guid.Empty);
                            var parameter = item.SecurityFunction.SecurityFunctionParameters.FirstOrDefault(x => x.Id == subItemID);
                            if (parameter == null)
                            {
                                parameter = new SecurityFunctionParameter(item.Partition, new PropertyAssignment[] { new PropertyAssignment(ElementFactory.IdPropertyAssignment, XmlHelper.GetAttributeValue(n, "id", Guid.NewGuid())) });
                                item.SecurityFunction.SecurityFunctionParameters.Add(parameter);
                            }

                            parameter.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(FieldParameter_PropertyChanged);
                            parameter.CodeFacade = XmlHelper.GetAttributeValue(n, "codefacade", parameter.CodeFacade);
                            parameter.Name = XmlHelper.GetAttributeValue(n, "name", parameter.Name);
                            nameList.Add(parameter.Name.ToLower());
                            parameter.Nullable = XmlHelper.GetAttributeValue(n, "nullable", parameter.Nullable);
                            var dtv = XmlHelper.GetAttributeValue(n, "datatype", parameter.DataType.ToString());
                            DataTypeConstants dt;
                            if (Enum.TryParse<DataTypeConstants>(dtv, true, out dt))
                                parameter.DataType = dt;
                            parameter.Default = XmlHelper.GetAttributeValue(n, "default", parameter.Default);
                            parameter.IsGenerated = XmlHelper.GetAttributeValue(n, "isgenerated", parameter.IsGenerated);
                            parameter.Length = XmlHelper.GetAttributeValue(n, "length", parameter.Length);
                            parameter.Scale = XmlHelper.GetAttributeValue(n, "scale", parameter.Scale);
                            parameter.Summary = XmlHelper.GetNodeValue(n, "summary", parameter.Summary);
                            parameter.PropertyChanged -= new System.ComponentModel.PropertyChangedEventHandler(FieldParameter_PropertyChanged);
                        }
                        if (item.SecurityFunction.SecurityFunctionParameters.Remove(x => !nameList.Contains(x.Name.ToLower())) > 0)
                            item.nHydrateModel.IsDirty = true;
                    }
                }

                #endregion

                LoadEntityIndexes(folder, item);

                //Order fields (skip for model that did not have sort order when saved)
                var fc = new FieldOrderComparer();
                if (item.Fields.Count(x => x.SortOrder > 0) > 0)
                    item.Fields.Sort(fc.Compare);
            }

            //Must load relations AFTER ALL entities are loaded
            foreach (var item in model.Entities)
            {
                LoadEntityRelations(folder, item);
                LoadModules(folder, item);
                LoadEntityStaticData(folder, item);
                LoadEntityMetaData(folder, item);
                LoadEntityComposites(folder, item);
            }

            #endregion

        }
Exemplo n.º 3
0
        private static void LoadFromDisk(IEnumerable <Entity> list, nHydrateModel model, string rootFolder, Microsoft.VisualStudio.Modeling.Store store)
        {
            var folder = Path.Combine(rootFolder, FOLDER_ET);

            if (!Directory.Exists(folder))
            {
                return;
            }

            #region Load other parameter/field information
            var fList = Directory.GetFiles(folder, "*.configuration.xml");
            foreach (var f in fList)
            {
                var document = new XmlDocument();
                try
                {
                    document.Load(f);
                }
                catch (Exception ex)
                {
                    //Do Nothing
                    MessageBox.Show("The file '" + f + "' is not valid and could not be loaded!", "Load Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

                var fi     = new FileInfo(f);
                var name   = fi.Name.Substring(0, fi.Name.Length - ".configuration.xml".Length).ToLower();
                var itemID = XmlHelper.GetAttributeValue(document.DocumentElement, "id", Guid.Empty);
                var item   = list.FirstOrDefault(x => x.Id == itemID);
                if (item == null)
                {
                    item = new Entity(model.Partition, new PropertyAssignment[] { new PropertyAssignment(ElementFactory.IdPropertyAssignment, XmlHelper.GetAttributeValue(document.DocumentElement, "id", Guid.NewGuid())) });
                    model.Entities.Add(item);
                }

                System.Windows.Forms.Application.DoEvents();

                #region Properties

                item.Name                   = XmlHelper.GetAttributeValue(document.DocumentElement, "name", item.Name);
                item.AllowCreateAudit       = XmlHelper.GetAttributeValue(document.DocumentElement, "allowcreateaudit", item.AllowCreateAudit);
                item.AllowModifyAudit       = XmlHelper.GetAttributeValue(document.DocumentElement, "allowmodifyaudit", item.AllowModifyAudit);
                item.AllowTimestamp         = XmlHelper.GetAttributeValue(document.DocumentElement, "allowtimestamp", item.AllowTimestamp);
                item.CodeFacade             = XmlHelper.GetAttributeValue(document.DocumentElement, "codefacade", item.CodeFacade);
                item.Immutable              = XmlHelper.GetAttributeValue(document.DocumentElement, "immutable", item.Immutable);
                item.IsAssociative          = XmlHelper.GetAttributeValue(document.DocumentElement, "isassociative", item.IsAssociative);
                item.GeneratesDoubleDerived = XmlHelper.GetAttributeValue(document.DocumentElement, "generatesdoublederived", item.GeneratesDoubleDerived);
                item.IsTenant               = XmlHelper.GetAttributeValue(document.DocumentElement, "isTenant", item.IsTenant);

                var tev = XmlHelper.GetAttributeValue(document.DocumentElement, "typedentity", item.TypedEntity.ToString());
                if (Enum.TryParse <TypedEntityConstants>(tev, true, out var te))
                {
                    item.TypedEntity = te;
                }

                item.Schema  = XmlHelper.GetAttributeValue(document.DocumentElement, "schema", item.Schema);
                item.Summary = XmlHelper.GetNodeValue(document.DocumentElement, "summary", item.Summary);

                #endregion

                #region Fields

                var fieldsNodes = document.DocumentElement.SelectSingleNode("//fieldset");
                if (fieldsNodes != null)
                {
                    var nameList = new List <string>();
                    foreach (XmlNode n in fieldsNodes.ChildNodes)
                    {
                        var subItemID = XmlHelper.GetAttributeValue(n, "id", Guid.Empty);
                        var field     = item.Fields.FirstOrDefault(x => x.Id == subItemID);
                        if (field == null)
                        {
                            field = new Field(item.Partition, new PropertyAssignment[] { new PropertyAssignment(ElementFactory.IdPropertyAssignment, XmlHelper.GetAttributeValue(n, "id", Guid.NewGuid())) });
                            item.Fields.Add(field);
                        }
                        field.Name       = XmlHelper.GetAttributeValue(n, "name", string.Empty);
                        field.CodeFacade = XmlHelper.GetAttributeValue(n, "codefacade", field.CodeFacade);
                        nameList.Add(field.Name.ToLower());
                        field.Nullable = XmlHelper.GetAttributeValue(n, "nullable", field.Nullable);

                        var dtv = XmlHelper.GetAttributeValue(n, "datatype", field.DataType.ToString());
                        if (Enum.TryParse <DataTypeConstants>(dtv, true, out var dt))
                        {
                            field.DataType = dt;
                        }

                        var itv = XmlHelper.GetAttributeValue(n, "identity", field.Identity.ToString());
                        if (Enum.TryParse <IdentityTypeConstants>(itv, true, out var it))
                        {
                            field.Identity = it;
                        }

                        field.DataFormatString = XmlHelper.GetNodeValue(n, "dataformatstring", field.DataFormatString);
                        field.Default          = XmlHelper.GetAttributeValue(n, "default", field.Default);
                        field.DefaultIsFunc    = XmlHelper.GetAttributeValue(n, "defaultisfunc", field.DefaultIsFunc);
                        field.Formula          = XmlHelper.GetAttributeValue(n, "formula", field.Formula);
                        field.IsIndexed        = XmlHelper.GetAttributeValue(n, "isindexed", field.IsIndexed);
                        field.IsPrimaryKey     = XmlHelper.GetAttributeValue(n, "isprimarykey", field.IsPrimaryKey);
                        field.IsCalculated     = XmlHelper.GetAttributeValue(n, "Iscalculated", field.IsCalculated);
                        field.IsUnique         = XmlHelper.GetAttributeValue(n, "isunique", field.IsUnique);
                        field.Length           = XmlHelper.GetAttributeValue(n, "length", field.Length);
                        field.Scale            = XmlHelper.GetAttributeValue(n, "scale", field.Scale);
                        field.SortOrder        = XmlHelper.GetAttributeValue(n, "sortorder", field.SortOrder);
                        field.IsReadOnly       = XmlHelper.GetAttributeValue(n, "isreadonly", field.IsReadOnly);
                        field.Obsolete         = XmlHelper.GetAttributeValue(n, "obsolete", field.Obsolete);
                        field.Summary          = XmlHelper.GetNodeValue(n, "summary", field.Summary);
                    }
                    if (item.Fields.Remove(x => !nameList.Contains(x.Name.ToLower())) > 0)
                    {
                        item.nHydrateModel.IsDirty = true;
                    }
                }

                #endregion

                LoadEntityIndexes(folder, item);

                //Order fields (skip for model that did not have sort order when saved)
                var fc = new FieldOrderComparer();
                if (item.Fields.Count(x => x.SortOrder > 0) > 0)
                {
                    item.Fields.Sort(fc.Compare);
                }
            }

            //Must load relations AFTER ALL entities are loaded
            foreach (var item in model.Entities)
            {
                LoadEntityRelations(folder, item);
                LoadEntityStaticData(folder, item);
            }

            #endregion
        }
Exemplo n.º 4
0
        private static void LoadFromDisk(IEnumerable <Entity> list, nHydrateModel model, DiskModel diskModel)
        {
            #region Load other parameter/field information
            foreach (var entity in diskModel.Entities)
            {
                var itemID = new Guid(entity.id);
                var item   = list.FirstOrDefault(x => x.Id == itemID);
                if (item == null)
                {
                    item = new Entity(model.Partition, new PropertyAssignment[] { new PropertyAssignment(ElementFactory.IdPropertyAssignment, itemID) });
                    model.Entities.Add(item);
                }

                System.Windows.Forms.Application.DoEvents();

                #region Properties

                item.Name                   = entity.name;
                item.AllowCreateAudit       = entity.allowcreateaudit != 0;
                item.AllowModifyAudit       = entity.allowmodifyaudit != 0;
                item.AllowTimestamp         = entity.allowtimestamp != 0;
                item.CodeFacade             = entity.codefacade;
                item.Immutable              = entity.immutable != 0;
                item.IsAssociative          = entity.isassociative != 0;
                item.GeneratesDoubleDerived = entity.generatesdoublederived != 0;
                item.IsTenant               = entity.isTenant != 0;

                if (Enum.TryParse <TypedEntityConstants>(entity.typedentity, true, out var te))
                {
                    item.TypedEntity = te;
                }

                item.Schema  = entity.schema;
                item.Summary = entity.summary;

                #endregion

                #region Fields

                var nameList = new List <string>();
                foreach (var fieldNode in entity.fieldset)
                {
                    var subItemID = new Guid(fieldNode.id);
                    var field     = item.Fields.FirstOrDefault(x => x.Id == subItemID);
                    if (field == null)
                    {
                        field = new Field(item.Partition, new PropertyAssignment[] { new PropertyAssignment(ElementFactory.IdPropertyAssignment, subItemID) });
                        item.Fields.Add(field);
                    }
                    field.Name       = fieldNode.name;
                    field.CodeFacade = fieldNode.codefacade;
                    nameList.Add(field.Name.ToLower());
                    field.Nullable = fieldNode.nullable != 0;

                    if (Enum.TryParse <DataTypeConstants>(fieldNode.datatype, true, out var dt))
                    {
                        field.DataType = dt;
                    }

                    if (Enum.TryParse <IdentityTypeConstants>(fieldNode.identity, true, out var it))
                    {
                        field.Identity = it;
                    }

                    field.DataFormatString = fieldNode.dataformatstring;
                    field.Default          = fieldNode.@default;
                    field.DefaultIsFunc    = fieldNode.defaultisfunc != 0;
                    field.Formula          = fieldNode.formula;
                    field.IsIndexed        = fieldNode.isindexed != 0;
                    field.IsPrimaryKey     = fieldNode.isprimarykey != 0;
                    field.IsCalculated     = fieldNode.Iscalculated != 0;
                    field.IsUnique         = fieldNode.isunique != 0;
                    field.Length           = fieldNode.length;
                    field.Scale            = fieldNode.scale;
                    field.SortOrder        = fieldNode.sortorder;
                    field.IsReadOnly       = fieldNode.isreadonly != 0;
                    field.Obsolete         = fieldNode.obsolete != 0;
                    field.Summary          = fieldNode.summary;
                }
                if (item.Fields.Remove(x => !nameList.Contains(x.Name.ToLower())) > 0)
                {
                    item.nHydrateModel.IsDirty = true;
                }

                #endregion

                LoadEntityIndexes(item, diskModel);

                //Order fields (skip for model that did not have sort order when saved)
                var fc = new FieldOrderComparer();
                if (item.Fields.Count(x => x.SortOrder > 0) > 0)
                {
                    item.Fields.Sort(fc.Compare);
                }
            }

            //Must load relations AFTER ALL entities are loaded
            foreach (var item in model.Entities)
            {
                LoadEntityRelations(item, diskModel);
                LoadEntityStaticData(item, diskModel);
            }

            #endregion
        }