Exemple #1
0
 /// <summary>
 /// 如果某个标志位为打开,则执行Action
 /// </summary>
 /// <param name="smd"></param>
 /// <param name="constSmd"></param>
 /// <param name="action"></param>
 public static void IfSwitchedOn(this SnapshotModeDefinition smd, SnapshotModeDefinition constSmd, Action action)
 {
     if ((smd & constSmd) != SnapshotModeDefinition.None && action != null)
     {
         action();
     }
 }
Exemple #2
0
        public static void SchemaToSqlClauseBuilder <T>(this SchemaObjectBase obj, SnapshotModeDefinition constSmd, T builder) where T : SqlClauseBuilderIUW
        {
            if (obj != null && builder != null)
            {
                obj.Schema.Properties.ForEach(pd =>
                                              pd.SnapshotMode.IfSwitchedOn(constSmd, () =>
                                                                           builder.AppendItem(GetFieldName(ORMapping.GetMappingInfo(obj.GetType()), pd), GetPropertyValue(obj, pd))));

                builder.AppendItem("SearchContent", obj.ToFullTextString());
                builder.AppendItem("SchemaType", obj.SchemaType);
                builder.AppendItem("Status", (int)obj.Status);
            }
        }
Exemple #3
0
        /// <summary>
        /// 更新对象的快照
        /// </summary>
        /// <param name="obj"></param>
        /// <param name="tableName">表名</param>
        /// <param name="snapshotMode"></param>
        public void UpdateCurrentSnapshot(T obj, string tableName, SnapshotModeDefinition snapshotMode)
        {
            obj.NullCheck("obj");

            string sql = new VersionSnapshotUpdateSqlBuilder(snapshotMode, tableName).ToUpdateSql(obj, ORMapping.GetMappingInfo(obj.GetType()));

            using (TransactionScope scope = TransactionScopeFactory.Create())
            {
                DateTime dt = (DateTime)DbHelper.RunSqlReturnScalar(sql, this.GetConnectionName());

                SCActionContext.Current.TimePoint.IsMinValue(() => SCActionContext.Current.TimePoint = dt);

                scope.Complete();
            }
        }
Exemple #4
0
 public static void IfInFullTextIndex(this SnapshotModeDefinition smd, Action action)
 {
     IfSwitchedOn(smd, SnapshotModeDefinition.IsFullTextIndexed, action);
 }
Exemple #5
0
 public static void IfInSnapshot(this SnapshotModeDefinition smd, Action action)
 {
     IfSwitchedOn(smd, SnapshotModeDefinition.IsInSnapshot, action);
 }
Exemple #6
0
 public VersionSnapshotUpdateSqlBuilder(SnapshotModeDefinition modeDefinition, string tableName)
 {
     this._ModeDefinition = modeDefinition;
     this._TableName      = tableName;
 }