コード例 #1
0
        /// <summary>
        /// Проверяет, существует ли объект в БД
        /// </summary>
        /// <param name="dbobj"></param>
        /// <returns></returns>
        public bool IsDbObjectExists(DbObject dbobj)
        {
            Substitute(dbobj);

            object exists = this.m_oCommand.ExecuteScalar();

            return(exists != null);
        }
コード例 #2
0
        protected override void Substitute(DbObject dbobj)
        {
            base.Substitute(dbobj);

            IDbDataParameter paramName = (IDbDataParameter)Command.Parameters["@Name"];

            paramName.Value = dbobj.Name;
        }
コード例 #3
0
        protected override void Substitute(DbObject dbobj)
        {
            base.Substitute(dbobj);

            DbObjectOwned dbobjTyped = (DbObjectOwned)dbobj;

            IDbDataParameter paramOwner = (IDbDataParameter)Command.Parameters["@Owner"];

            paramOwner.Value = dbobjTyped.Owner;
        }
コード例 #4
0
ファイル: DbCheckerCache.cs プロジェクト: SanSay157/IT8
 /// <summary>
 /// Возвращает экземпляр IDbChecker по описанию объекта в БД.
 /// Если соответствующий экземпляр IDbCheck еще не создавался,
 ///  то он создается.
 /// </summary>
 public IDbChecker this[DbObject dbobj]
 {
     get
     {
         Type       key       = dbobj.GetType();
         IDbChecker dbchecker = this.m_oHashtable[key] as IDbChecker;
         if (dbchecker == null)
         {
             dbchecker = createDbChecker(dbobj);
             this.m_oHashtable[key] = dbchecker;
         }
         return(dbchecker);
     }
 }
コード例 #5
0
        protected override void Substitute(DbObject dbobj)
        {
            base.Substitute(dbobj);

            DbObjectTableChild dbobjTyped = (DbObjectTableChild)dbobj;

            IDbDataParameter paramName = (IDbDataParameter)Command.Parameters["@ParentName"];

            paramName.Value = dbobjTyped.ParentTable.Name;

            IDbDataParameter paramOwner = (IDbDataParameter)Command.Parameters["@ParentOwner"];

            paramOwner.Value = dbobjTyped.ParentTable.Owner;
        }
コード例 #6
0
ファイル: DbCheckerCache.cs プロジェクト: SanSay157/IT8
        /// <summary>
        /// Создает класс проверки наличия объектов в БД
        /// </summary>
        /// <param name="dbobj"></param>
        /// <returns></returns>
        private IDbChecker createDbChecker(DbObject dbobj)
        {
            // ищем подходящее описание в конфиге
            foreach (DbCheckerDescription descr in this.m_oConfig.DbCheckerDescriptions)
            {
                if (descr.DbObjectType == dbobj.Type)
                {
                    return(descr.CreateDbChecker(this.m_oConnection));
                }
            }

            // если дошли до сюда, значит не нашли ничего подходящего
            throw new ArgumentException(
                      "Данный тип объектов БД не поддерживается",
                      "dbobj");
        }
コード例 #7
0
ファイル: DbObjectFactory.cs プロジェクト: SanSay157/IT8
        /// <summary>
        /// Создает описание дочернего объекта в БД по его XML-описанию
        /// и описанию родительского объекта
        /// </summary>
        /// <param name="xmlObj"></param>
        /// <param name="dbObj"></param>
        /// <returns></returns>
        public static DbObject Create(XmlElement xmlObj, DbObject dbObj)
        {
            string typeName = xmlObj.LocalName;

            switch (typeName)
            {
            case "index":
                return(new DbObjectIndex(
                           xmlObj.GetAttribute("name"),
                           xmlObj.GetAttribute("description"),
                           (DbObjectTable)dbObj));

            case "check-constraint":
                return(new DbObjectCheckConstraint(
                           xmlObj.GetAttribute("name"),
                           xmlObj.GetAttribute("description"),
                           (DbObjectTable)dbObj));

            default:
                throw new ArgumentException(
                          String.Format(ERR_INVALID_OBJECT_TYPE, typeName),
                          "xmlObj");
            }
        }
コード例 #8
0
ファイル: DbCheckConfig.cs プロジェクト: SanSay157/IT8
        /// <summary>
        /// Читает из файла описания объектов БД
        /// </summary>
        private void loadDbObjects()
        {
            ArrayList dbObjList = new ArrayList();

            string      xpath      = String.Format("{0}dbobjects/{0}*", this.RootElementNSPrefix);
            XmlNodeList xmlObjects = SelectNodes(xpath);

            foreach (XmlElement xmlObj in xmlObjects)
            {
                DbObject dbObj = DbObjectFactory.Create(xmlObj);
                dbObjList.Add(dbObj);

                string      xpathChild = String.Format("{0}*", this.RootElementNSPrefix);
                XmlNodeList xmlChilds  = xmlObj.SelectNodes(xpathChild, this.NSManager);

                foreach (XmlElement xmlChild in xmlChilds)
                {
                    DbObject dbChild = DbObjectFactory.Create(xmlChild, dbObj);
                    dbObjList.Add(dbChild);
                }
            }

            this.m_aDbObjects = (DbObject[])dbObjList.ToArray(typeof(DbObject));
        }
コード例 #9
0
 /// <summary>
 /// Подставляет в команду параметры, соответствующие описанию объекта
 /// </summary>
 /// <param name="dbobj"></param>
 protected virtual void Substitute(DbObject dbobj)
 {
 }