private ClassMap GetClassMapInformation(XmlNodeReader node) { //<class name="r_Class" table="r_Class" datasource="DbName"> // <attribute name="Class_ID" column="Class_ID" type="String" key="primary" size="20" /> // <attribute name="Class_Name" column="Class_Name" type="String" size="50" /> //</class> string className = node.GetAttribute("name"); string tableName = node.GetAttribute("table"); string databaseName = node.GetAttribute("datasource"); int intlop = 0; string err; ClassMap clsMap = null; if ((className != null) && (databaseName != null) && (tableName != null)) { IPersistenceProvider provider = (IPersistenceProvider)DatabasePool[databaseName]; Assert.VerifyNotNull(provider, Error.XmlReadError, "Named:" + databaseName + "Database mapping information not found!"); clsMap = new ClassMap(className, provider); if (!m_DatabaseMaps.ContainsKey(databaseName)) { err = "In the mapping class:" + className + ",Named:" + databaseName + "Database mapping information could not be found!"; Assert.Fail(Error.XmlReadError, err); } TableMap tblMap = new TableMap("[" + provider.GetTableName(tableName) + "]", (DatabaseMap)m_DatabaseMaps[databaseName]); int clsDep = node.Depth; while (node.Read() && node.Depth > clsDep) { if ((node.NodeType == XmlNodeType.Element) && (node.Name == "attribute")) { AttributeMap attrMap = GetAttributeMapInformation(node, clsMap, tblMap, intlop); if (attrMap != null) { clsMap.AddAttributeMap(attrMap); } intlop++; } } } else { err = "ClassMap lack className,databaseName,tableName These necessary attributes!"; Assert.Fail(Error.XmlReadError, err); } if (clsMap.Table.PrimaryKeyIndex < 0) { err = "In table [" + clsMap.Table.Name + "] Primary key not defined!"; Assert.Fail(Error.XmlReadError, err); } return(clsMap); }