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); } } }
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); }