public virtual OptimisticConcurrencyBehaviorType GetDeleteOptimisticConcurrencyBehavior(OptimisticConcurrencyBehaviorType optimisticConcurrencyBehavior, IPropertyMap propertyMap) { IColumnMap columnMap = null; if (optimisticConcurrencyBehavior == OptimisticConcurrencyBehaviorType.DefaultBehavior) { if (this.Context.OptimisticConcurrencyMode == OptimisticConcurrencyMode.Disabled) { optimisticConcurrencyBehavior = OptimisticConcurrencyBehaviorType.Disabled; } else { optimisticConcurrencyBehavior = propertyMap.DeleteOptimisticConcurrencyBehavior; if (optimisticConcurrencyBehavior == OptimisticConcurrencyBehaviorType.DefaultBehavior) { optimisticConcurrencyBehavior = propertyMap.ClassMap.DeleteOptimisticConcurrencyBehavior; if (optimisticConcurrencyBehavior == OptimisticConcurrencyBehaviorType.DefaultBehavior) { optimisticConcurrencyBehavior = propertyMap.ClassMap.DomainMap.DeleteOptimisticConcurrencyBehavior; if (optimisticConcurrencyBehavior == OptimisticConcurrencyBehaviorType.DefaultBehavior) { optimisticConcurrencyBehavior = m_DeleteOptimisticConcurrencyBehavior; } } } } } if (optimisticConcurrencyBehavior == OptimisticConcurrencyBehaviorType.DefaultBehavior) { columnMap = propertyMap.GetColumnMap(); if (columnMap != null) { if (columnMap.DataType == DbType.AnsiString || columnMap.DataType == DbType.AnsiStringFixedLength || columnMap.DataType == DbType.String || columnMap.DataType == DbType.StringFixedLength) { if (columnMap.Precision == 0 || columnMap.Precision >= 4000) { optimisticConcurrencyBehavior = OptimisticConcurrencyBehaviorType.Disabled; } else { optimisticConcurrencyBehavior = OptimisticConcurrencyBehaviorType.IncludeWhenLoaded; } } else if (columnMap.DataType == DbType.Binary || columnMap.DataType == DbType.Object) { optimisticConcurrencyBehavior = OptimisticConcurrencyBehaviorType.Disabled; } else { optimisticConcurrencyBehavior = OptimisticConcurrencyBehaviorType.IncludeWhenLoaded; } } } else { if (!(optimisticConcurrencyBehavior == OptimisticConcurrencyBehaviorType.Disabled)) { if (propertyMap.DeleteOptimisticConcurrencyBehavior == OptimisticConcurrencyBehaviorType.DefaultBehavior) { columnMap = propertyMap.GetColumnMap(); if (columnMap != null) { if (columnMap.DataType == DbType.AnsiString || columnMap.DataType == DbType.AnsiStringFixedLength || columnMap.DataType == DbType.String || columnMap.DataType == DbType.StringFixedLength) { if (columnMap.Precision == 0 || columnMap.Precision >= 4000) { optimisticConcurrencyBehavior = OptimisticConcurrencyBehaviorType.Disabled; } } else if (columnMap.DataType == DbType.Binary || columnMap.DataType == DbType.Object) { optimisticConcurrencyBehavior = OptimisticConcurrencyBehaviorType.Disabled; } } } } } if (columnMap == null) { columnMap = propertyMap.GetColumnMap(); } if (columnMap != null) { if (columnMap.DataType == DbType.Binary || columnMap.DataType == DbType.Object) { optimisticConcurrencyBehavior = OptimisticConcurrencyBehaviorType.Disabled; } } return optimisticConcurrencyBehavior; }
public virtual OptimisticConcurrencyBehaviorType GetDeleteOptimisticConcurrencyBehavior(OptimisticConcurrencyBehaviorType optimisticConcurrencyBehavior, IClassMap classMap) { if (optimisticConcurrencyBehavior == OptimisticConcurrencyBehaviorType.DefaultBehavior) { if (this.Context.OptimisticConcurrencyMode == OptimisticConcurrencyMode.Disabled) { optimisticConcurrencyBehavior = OptimisticConcurrencyBehaviorType.Disabled; } else { optimisticConcurrencyBehavior = classMap.DeleteOptimisticConcurrencyBehavior; if (optimisticConcurrencyBehavior == OptimisticConcurrencyBehaviorType.DefaultBehavior) { optimisticConcurrencyBehavior = classMap.DomainMap.DeleteOptimisticConcurrencyBehavior; if (optimisticConcurrencyBehavior == OptimisticConcurrencyBehaviorType.DefaultBehavior) { optimisticConcurrencyBehavior = m_DeleteOptimisticConcurrencyBehavior; if (optimisticConcurrencyBehavior == OptimisticConcurrencyBehaviorType.DefaultBehavior) { optimisticConcurrencyBehavior = OptimisticConcurrencyBehaviorType.IncludeWhenLoaded; } } } } } return optimisticConcurrencyBehavior; }