コード例 #1
0
ファイル: FileGdbProvider.cs プロジェクト: cugkgq/Project
        private static FeatureDataTable CreateTable(EsriTable table)
        {
            var fdt = new FeatureDataTable();

            var columns = fdt.Columns;

            var fi = table.FieldInformation;

            for (var i = 0; i < fi.Count; i++)
            {
                var  ft = fi.GetFieldType(i);
                Type netType;
                var  primaryKey = false;
                switch (ft)
                {
                case Esri.FileGDB.FieldType.OID:
                    netType    = typeof(int);
                    primaryKey = true;
                    break;

                case Esri.FileGDB.FieldType.Single:
                    netType = typeof(float);
                    break;

                case Esri.FileGDB.FieldType.XML:
                    netType = typeof(string);
                    break;

                case Esri.FileGDB.FieldType.GlobalID:
                    netType = typeof(int);
                    break;

                case Esri.FileGDB.FieldType.GUID:
                    netType = typeof(Guid);
                    break;

                case Esri.FileGDB.FieldType.String:
                    netType = typeof(string);
                    break;

                case Esri.FileGDB.FieldType.Double:
                    netType = typeof(double);
                    break;

                case Esri.FileGDB.FieldType.Blob:
                case Esri.FileGDB.FieldType.Raster:
                    netType = typeof(byte[]);
                    break;

                case Esri.FileGDB.FieldType.Integer:
                    netType = typeof(long);
                    break;

                case Esri.FileGDB.FieldType.SmallInteger:
                    netType = typeof(int);
                    break;

                case Esri.FileGDB.FieldType.Date:
                    netType = typeof(DateTime);
                    break;

                case Esri.FileGDB.FieldType.Geometry:
                    //Do not add geometry column
                    continue;

                default:
                    throw new InvalidOperationException("Unknown field type" + ft);
                }

                var dc = new DataColumn(fi.GetFieldName(i), netType)
                {
                    AllowDBNull = fi.GetFieldIsNullable(i),

                    //MaxLength = fi.GetFieldLength(i)
                };
                if (netType == typeof(string))
                {
                    dc.MaxLength = fi.GetFieldLength(i);
                }

                columns.Add(dc);

                if (primaryKey)
                {
                    fdt.PrimaryKey = new[] { dc }
                }
                ;
            }
            return(fdt);
        }
コード例 #2
0
        private static FeatureDataTable CreateTable(EsriTable table)
        {
            var fdt = new FeatureDataTable();

            var columns = fdt.Columns;

            var fi = table.FieldInformation;
            for (var i = 0; i < fi.Count; i++)
            {
                var ft = fi.GetFieldType(i);
                Type netType;
                var primaryKey = false;
                switch (ft)
                {
                    case Esri.FileGDB.FieldType.OID:
                        netType = typeof(int);
                        primaryKey = true;
                        break;
                    case Esri.FileGDB.FieldType.Single:
                        netType = typeof(float);
                        break;
                    case Esri.FileGDB.FieldType.XML:
                        netType = typeof(string);
                        break;
                    case Esri.FileGDB.FieldType.GlobalID:
                        netType = typeof(int);
                        break;
                    case Esri.FileGDB.FieldType.GUID:
                        netType = typeof(Guid);
                        break;
                    case Esri.FileGDB.FieldType.String:
                        netType = typeof(string);
                        break;
                    case Esri.FileGDB.FieldType.Double:
                        netType = typeof(double);
                        break;
                    case Esri.FileGDB.FieldType.Blob:
                    case Esri.FileGDB.FieldType.Raster:
                        netType = typeof(byte[]);
                        break;
                    case Esri.FileGDB.FieldType.Integer:
                        netType = typeof(long);
                        break;
                    case Esri.FileGDB.FieldType.SmallInteger:
                        netType = typeof(int);
                        break;
                    case Esri.FileGDB.FieldType.Date:
                        netType = typeof(DateTime);
                        break;
                    case Esri.FileGDB.FieldType.Geometry:
                        //Do not add geometry column
                        continue;
                    default:
                        throw new InvalidOperationException("Unknown field type" + ft);
                }

                var dc = new DataColumn(fi.GetFieldName(i), netType)
                {
                    AllowDBNull = fi.GetFieldIsNullable(i),

                    //MaxLength = fi.GetFieldLength(i)
                };
                if (netType == typeof(string))
                    dc.MaxLength = fi.GetFieldLength(i);

                columns.Add(dc);

                if (primaryKey)
                    fdt.PrimaryKey = new[] { dc };
            }
            return fdt;
        }