public void AddItemWhenEmptyTest() { var column = new RecordColumn("test"); var columns = new RecordColumnCollection <RecordColumn>(); columns.Add(column); Assert.AreEqual(1, columns.Count); Assert.AreEqual(column, columns[0]); Assert.AreEqual(column, columns["test"]); }
/// <summary> /// Set or Get a value from record's column /// </summary> /// <param name="column">RecordColumn instance of column</param> /// <returns></returns> public object this[RecordColumn column] { get { String name = Current[GetType()].m_ColumnNameToMemberName[column.ColumnName]; return(GetMemberValue(name)); } set { String name = Current[GetType()].m_ColumnNameToMemberName[column.ColumnName]; SetMemberValue(name, value); //column.ColumnOriginValue = value; } }
/// <summary> /// Build a list of memeber key, attributes, externkeys and identities /// </summary> /// <param name="pType"></param> internal void InitializeMembers(Type pType) { lock (RecordType) { RecordType = pType; if (Current.ContainsKey(pType)) { //ConnectionString = Current[pType].ConnectionString; RecordConnectionString = Current[pType].ConnectionString; RecordProviderFactory = Current[pType].ProviderFactory; if (String.IsNullOrEmpty(RecordConnectionString)) { RecordConnectionString = ConnectionString; } if (RecordProviderFactory == null) { RecordProviderFactory = ProviderFactory; // Record.SharedProviderFactory; } _Columns = new List <RecordColumn>(Current[pType].m_Columns); foreach (RecordColumn rc in _Columns) { rc.Record = this; } } else { MemberContext mc = new MemberContext(); Current.Add(pType, mc); Current[pType].Clear(); object[] customs = pType.GetCustomAttributes(true); foreach (object obj in customs) { if (obj is FieldCatalog) { Current[pType].CatalogName = String.Format("[{0}]", (obj as FieldCatalog).CatalogName); } if (obj is FieldScheme) { Current[pType].SchemeName = String.Format("[{0}]", (obj as FieldScheme).SchemeName); } if (obj is FieldTable) { Current[pType].TableName = String.Format("[{0}]", (obj as FieldTable).TableName); } if (obj is FieldConnectionString) { Current[pType].ConnectionString = (obj as FieldConnectionString).ConnectionString; } if (obj is FieldProviderName) { Current[pType].ProviderFactory = CreateProviderFactoty((obj as FieldProviderName).ProviderSupport); } } //ConnectionString = Current[pType].ConnectionString; RecordConnectionString = Current[pType].ConnectionString; RecordProviderFactory = Current[pType].ProviderFactory; //if (String.IsNullOrEmpty(SharedConnectionString)) SharedConnectionString = RecordConnectionString; //if (SharedProviderFactory == null) SharedProviderFactory = RecordProviderFactory; //if (String.IsNullOrEmpty(RecordConnectionString)) RecordConnectionString = ConnectionString; if (RecordProviderFactory == null) { RecordProviderFactory = ProviderFactory; // SharedProviderFactory; } // if (String.IsNullOrEmpty(RecordConnectionString)) RecordConnectionString = CreateConnectionString(pType); if (RecordProviderFactory == null) { RecordProviderFactory = ProviderFactory; // Record.SharedProviderFactory; } if (RecordProviderFactory != null) { RecordConnection = RecordProviderFactory.CreateConnection(); } //if (String.IsNullOrEmpty(RecordConnectionString)) throw new RecordConnectionStringNullException("ConnectionString is null value"); //if (ProviderFactory == null) throw new RecordProviderFactoryNullException("ProviderFactory is null value"); //if (RecordConnection == null) throw new RecordConnectionNullException("Connection is null value"); MemberInfo[] members = pType.GetProperties(RecordBindingFlags); foreach (PropertyInfo member in members) { if (member.MemberType == MemberTypes.Property) { object[] objs = member.GetCustomAttributes(typeof(Field), true); foreach (Object obj in objs) { if (obj is Field) { Field field = obj as Field; Current[pType].m_ColumnNames.Add(field.Name); Current[pType].m_Members.Add(member.Name); Current[pType].m_FieldNames.Add(field.Name); if (field.IsPrimaryKey) { Current[pType].m_FieldNameKeys.Add(field.Name); } if (field.IsIdentity) { Current[pType].m_FieldNameIdentites.Add(field.Name); Current[pType].PropertyIdentityName = member.Name; Current[pType].FieldIdentityName = field.Name; } if (field.Type == FieldType.ExternalKey) { Current[pType].m_FieldNameExternKeys.Add(field.Name); } Current[pType].m_ColumnNameToMemberName.Add(field.Name.TrimEnd(), member.Name.TrimEnd()); Current[pType].m_FieldNameToMemberName.Add(field.Name.TrimEnd(), member.Name.TrimEnd()); RecordColumn rc = new RecordColumn(field.Name.TrimEnd(), member.Name.TrimEnd(), field.ObjType, field, this); Current[pType].m_Columns.Add(rc); _Columns.Add(rc); } if (obj is FieldObject) { //FieldObject field = obj as FieldObject; //Current[pType].m_FieldNameObjects.Add(field.FieldName); //Current[pType].m_ColumnNameToMemberName.Add(field.FieldName, member.Name); //Current[pType].m_FieldNameToMemberName.Add(field.FieldName, member.Name); } } } } } } }