コード例 #1
0
ファイル: LightDBMgr.cs プロジェクト: uvbs/Asda2-Server
        public static void MapNestedArray(this LightDBDefinitionSet defs, IDataField dataField,
                                          IDataFieldDefinition fieldDef, Dictionary <string, List <SimpleDataColumn> > mappedFields)
        {
            NestedArrayFieldDefinition arrayFieldDefinition = (NestedArrayFieldDefinition)fieldDef;
            NestedArrayDataField       nestedArrayDataField = (NestedArrayDataField)dataField;

            TableDefinition[] defaultTables =
                defs.EnsureTables(arrayFieldDefinition.Table, dataField.DataHolderDefinition);
            foreach (FlatArrayFieldDefinition segment in arrayFieldDefinition.Segments)
            {
                SimpleFlatFieldDefinition[] columns = segment.GetColumns(nestedArrayDataField.Length);
                for (int index = 0; index < columns.Length; ++index)
                {
                    SimpleFlatFieldDefinition fieldDef1 = columns[index];
                    IDataField dataField1;
                    if (!((NestedArrayAccessor)nestedArrayDataField.ArrayAccessors[index]).InnerFields.TryGetValue(
                            segment.Name, out dataField1))
                    {
                        throw new DataHolderException("NestedArray definition {0} refered to non-existing field {1}",
                                                      new object[2]
                        {
                            (object)nestedArrayDataField,
                            (object)segment
                        });
                    }
                    LightDBMgr.AddMapping(defs, defaultTables, fieldDef1, mappedFields,
                                          (IFlatDataFieldAccessor)dataField1, dataField1.MappedMember);
                }
            }
        }
コード例 #2
0
ファイル: LightDBMgr.cs プロジェクト: uvbs/Asda2-Server
        private static DataFieldDefinition CreateNestedArray(IDataField dataField)
        {
            Dictionary <string, IDataField> innerFields =
                ((NestedArrayAccessor[])((ArrayDataField)dataField).ArrayAccessors)[0].InnerFields;

            FlatArrayFieldDefinition[] arrayFieldDefinitionArray = new FlatArrayFieldDefinition[innerFields.Count];
            int num = 0;

            foreach (IDataField dataField1 in innerFields.Values)
            {
                FlatArrayFieldDefinition arrayFieldDefinition1 = new FlatArrayFieldDefinition();
                arrayFieldDefinition1.Name    = dataField1.Name;
                arrayFieldDefinition1.Offset  = 1;
                arrayFieldDefinition1.Pattern = "";
                FlatArrayFieldDefinition arrayFieldDefinition2 = arrayFieldDefinition1;
                arrayFieldDefinitionArray[num++] = arrayFieldDefinition2;
            }

            NestedArrayFieldDefinition arrayFieldDefinition = new NestedArrayFieldDefinition();

            arrayFieldDefinition.Name     = dataField.Name;
            arrayFieldDefinition.Segments = arrayFieldDefinitionArray;
            return((DataFieldDefinition)arrayFieldDefinition);
        }