示例#1
0
        public List <BaseModel> Search(BaseModel AEOModel, string AOWhereClause, BaseModel.LoadMethod ChooseMethod)
        {
            List <BaseModel> _ModelsReturn = new List <BaseModel>();

            IQueryFilter _queryParamns = new QueryFilter();

            _queryParamns.WhereClause = AOWhereClause;

            IFeatureCursor _rows    = ((IFeatureWorkspace)_workspace).OpenFeatureClass(AEOModel.EntityName).Search(_queryParamns, true);
            IFeature       _feature = _rows.NextFeature();

            while (_feature != null)
            {
                object[] _parameters = { _workspace };
                var      _model      = Activator.CreateInstance(AEOModel.GetType(), _parameters);

                foreach (ModelProperty _property in AEOModel.ModelProperties.Where(x => !(x.Attribute is EntityShapeFieldAttribute)))
                {
                    _property.Attribute.Load(_workspace, _feature, (BaseModel)_model, _property, ChooseMethod);
                }
                ((GISModel)_model).Geometry = _feature.ShapeCopy;
                _ModelsReturn.Add((BaseModel)_model);
                _feature = _rows.NextFeature();
            }

            return(_ModelsReturn);
        }
示例#2
0
        public void Load(BaseModel BaseModel, int KeyFieldValue, BaseModel.LoadMethod ChooseLoadMethod)
        {
            string _WhereClause = BaseModel.KeyField + "=" + KeyFieldValue;
            string _fields      = "";

            foreach (ModelProperty _property in BaseModel.ModelProperties.Where(x => !(x.Attribute is EntityManyToManyFieldAttribute)))
            {
                _fields += _property.Attribute.FieldName + ",";
            }

            _fields = _fields.Substring(0, _fields.Length - 1);

            ESRI.ArcGIS.Geodatabase.IQueryDef2 queryDef = (ESRI.ArcGIS.Geodatabase.IQueryDef2)((IFeatureWorkspace)_workspace).CreateQueryDef();
            queryDef.Tables      = BaseModel.EntityName;
            queryDef.SubFields   = _fields;
            queryDef.WhereClause = _WhereClause;
            ICursor _rows = queryDef.Evaluate();


            IRow _row = _rows.NextRow();

            if (_row != null)
            {
                foreach (ModelProperty _property in BaseModel.ModelProperties)
                {
                    _property.Attribute.Load(_workspace, _row, BaseModel, _property, ChooseLoadMethod);
                }
            }
        }
示例#3
0
        public List <BaseModel> Search(BaseModel BaseModel, string AOWhereClause, BaseModel.LoadMethod ChooseLoadMethod)
        {
            List <BaseModel> _ModelsReturn = new List <BaseModel>();

            string _fields = "";

            foreach (ModelProperty _property in BaseModel.ModelProperties.Where(x => !(x.Attribute is EntityManyToManyFieldAttribute)))
            {
                _fields += _property.Attribute.FieldName + ",";
            }

            _fields = _fields.Substring(0, _fields.Length - 1);

            ESRI.ArcGIS.Geodatabase.ITable tbProjeto = ((IFeatureWorkspace)_workspace).OpenTable(BaseModel.EntityName);
            ICursor _rows = GDBCursor.obterCursor(tbProjeto, _fields, AOWhereClause, "");

            IRow _row;

            while ((_row = _rows.NextRow()) != null)
            {
                object[]  _parameters = { _workspace };
                BaseModel _model      = (BaseModel)Activator.CreateInstance(BaseModel.GetType(), _parameters);

                foreach (ModelProperty _property in BaseModel.ModelProperties)
                {
                    _property.Attribute.Load(_workspace, _row, (BaseModel)_model, _property, ChooseLoadMethod);
                }

                _ModelsReturn.Add((BaseModel)_model);
            }

            return(_ModelsReturn);
        }
示例#4
0
        public void Load(BaseModel BaseModel, int KeyFieldValue, BaseModel.LoadMethod ChooseLoadMethod)
        {
            if (String.IsNullOrEmpty(BaseModel.KeyField))
            {
                throw new KeyFieldNotFoundException();
            }
            IQueryFilter _queryParamns = new QueryFilter();

            _queryParamns.WhereClause = BaseModel.KeyField + "=" + KeyFieldValue;

            ICursor _rows = ((IFeatureWorkspace)_workspace).OpenTable(BaseModel.EntityName).Search(_queryParamns, true);
            IRow    _row  = _rows.NextRow();

            if (_row != null)
            {
                foreach (ModelProperty _property in BaseModel.ModelProperties.Where(x => !(x.Attribute is EntityShapeFieldAttribute)))
                {
                    _property.Attribute.Load(_workspace, _row, BaseModel, _property);
                }
            }
        }
示例#5
0
 public void Load(IWorkspace Workspace, IFeature Feature, BaseModel BaseModel, ModelProperty Property, BaseModel.LoadMethod ChooseLoadMethod)
 {
     this.Load(Workspace, Feature, BaseModel, Property);
 }
示例#6
0
 public virtual void Load(IWorkspace Workspace, IRow Row, BaseModel BaseModel, ModelProperty Property, BaseModel.LoadMethod ChooseLoadMethod)
 {
     this.Load(Workspace, Row, BaseModel, Property);
 }
示例#7
0
 public void Load(IWorkspace Workspace, IFeature Feature, BaseModel BaseModel, ModelProperty Property, BaseModel.LoadMethod ChooseLoadMethod)
 {
     if (ChooseLoadMethod == BaseModel.LoadMethod.Lazy)
     {
         return;
     }
     this.Load(Workspace, Feature, BaseModel, Property);
 }
 public List <BaseModel> Search(BaseModel AEOModel, string AOWhereClause, BaseModel.LoadMethod ChooseMethod)
 {
     throw new NotImplementedException();
 }
示例#9
0
 public void Load(ESRI.ArcGIS.Geodatabase.IWorkspace Workspace, ESRI.ArcGIS.Geodatabase.IRow Row, BaseModel BaseModel, ModelProperty Property, BaseModel.LoadMethod ChooseLoadMethod)
 {
     if (BaseModel.LoadMethod.Lazy == ChooseLoadMethod)
     {
         return;
     }
     this.Load(Workspace, Row, BaseModel, Property);
 }
示例#10
0
 public void Load(ESRI.ArcGIS.Geodatabase.IWorkspace _workspace, ESRI.ArcGIS.Geodatabase.IRow _row, BaseModel BaseModel, ModelProperty _property, BaseModel.LoadMethod ChooseLoadMethod)
 {
     this.Load(_workspace, _row, BaseModel, _property);
 }