edit
This commit is contained in:
@@ -53,9 +53,14 @@ namespace XLAB2
|
||||
}
|
||||
|
||||
public static List<DeleteBlockerInfo> LoadDeleteBlockersFromForeignKeys(SqlConnection connection, string parentTableName, int id, IEnumerable<string> excludedChildTables = null)
|
||||
{
|
||||
return LoadDeleteBlockersFromForeignKeys(connection, null, parentTableName, id, excludedChildTables);
|
||||
}
|
||||
|
||||
public static List<DeleteBlockerInfo> LoadDeleteBlockersFromForeignKeys(SqlConnection connection, SqlTransaction transaction, string parentTableName, int id, IEnumerable<string> excludedChildTables = null)
|
||||
{
|
||||
var excluded = new HashSet<string>(excludedChildTables ?? Enumerable.Empty<string>(), StringComparer.OrdinalIgnoreCase);
|
||||
var metadata = LoadForeignKeyMetadata(connection, parentTableName)
|
||||
var metadata = LoadForeignKeyMetadata(connection, transaction, parentTableName)
|
||||
.Where(delegate(ForeignKeyMetadata item) { return !excluded.Contains(item.TableName); })
|
||||
.GroupBy(delegate(ForeignKeyMetadata item) { return item.SchemaName + "." + item.TableName; })
|
||||
.Select(delegate(IGrouping<string, ForeignKeyMetadata> group)
|
||||
@@ -85,6 +90,7 @@ namespace XLAB2
|
||||
|
||||
using (var command = new SqlCommand(sql, connection))
|
||||
{
|
||||
command.Transaction = transaction;
|
||||
command.CommandTimeout = GetCommandTimeoutSeconds();
|
||||
command.Parameters.Add("@Id", SqlDbType.Int).Value = id;
|
||||
var rowCount = Convert.ToInt32(command.ExecuteScalar());
|
||||
@@ -182,7 +188,7 @@ namespace XLAB2
|
||||
command.Parameters.Add(name, SqlDbType.VarChar, -1).Value = (object)value ?? DBNull.Value;
|
||||
}
|
||||
|
||||
private static IReadOnlyList<ForeignKeyMetadata> LoadForeignKeyMetadata(SqlConnection connection, string parentTableName)
|
||||
private static IReadOnlyList<ForeignKeyMetadata> LoadForeignKeyMetadata(SqlConnection connection, SqlTransaction transaction, string parentTableName)
|
||||
{
|
||||
const string sql = @"
|
||||
SELECT
|
||||
@@ -199,6 +205,7 @@ ORDER BY TableName, ColumnName;";
|
||||
|
||||
using (var command = new SqlCommand(sql, connection))
|
||||
{
|
||||
command.Transaction = transaction;
|
||||
command.CommandTimeout = GetCommandTimeoutSeconds();
|
||||
command.Parameters.Add("@ParentTableName", SqlDbType.VarChar, 128).Value = parentTableName;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user