/// <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(); } }
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); } }
/// <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(); } }
public static void IfInFullTextIndex(this SnapshotModeDefinition smd, Action action) { IfSwitchedOn(smd, SnapshotModeDefinition.IsFullTextIndexed, action); }
public static void IfInSnapshot(this SnapshotModeDefinition smd, Action action) { IfSwitchedOn(smd, SnapshotModeDefinition.IsInSnapshot, action); }
public VersionSnapshotUpdateSqlBuilder(SnapshotModeDefinition modeDefinition, string tableName) { this._ModeDefinition = modeDefinition; this._TableName = tableName; }