示例#1
0
        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"]);
        }
示例#2
0
 /// <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;
     }
 }
示例#3
0
        /// <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);
                                }
                            }
                        }
                    }
                }
            }
        }