存在国外的依赖出于测试目的截断表我有需要SqlConnection
或连接字符串和字符串的方法。该方法检查SqlConnection
或DbContext.Database.Connection.ConnectionString
针对一组“危险”的字符串,如果在连接字符串有任何“危险”的字符串,它不执行其查询。如何当通过C#
基本上,我需要知道如何执行(通过C#)一截断/删除表中的所有数据。然而问题是外国的依赖。我正在尝试以下方法。删除所有依赖项,删除表,然后恢复所有依赖项,但是我遇到了问题,我恢复了所有依赖项代码。我怎样才能通过C#做到这一点?
应该删除该表主要方法。
public int DeleteFromDatabase(SqlConnection sqlConnection, string tableName)
{
int success = 0;
string sqlTrunc = "Delete from " + tableName;
if (isSafeSqlConnection(sqlConnection))
{
DropAllConstraints();
using (sqlConnection)
{
SqlCommand cmd = new SqlCommand(sqlTrunc, sqlConnection);
sqlConnection.Open();
success = cmd.ExecuteNonQuery();
sqlConnection.Close();
}
ReinstateAllConstraints(); //<=error happens here.
}
return success;
}
这滴所有约束:
这就验证了传入的连接不是活的服务器:
private bool isSafeSqlConnection(SqlConnection connection)
{
string pathToUNsafeStrings = @"Utility\UnsafeStrings\UnsafeStrings.txt";
string[] unsafeStrings = File.ReadAllLines(pathToUNsafeStrings);
foreach (var item in unsafeStrings)
{
if (connection.ConnectionString.Contains(item))
return false;
}
return true;
}
该方法主要执行的每个条目从该查询返回:
select
'ALTER TABLE dbo.' + object_name(fk.parent_object_id) +
' ADD CONSTRAINT ' + fk.name +
' FOREIGN KEY(' + c1.name + ') REFERENCES dbo.' +
object_name(fk.referenced_object_id) + '(' + c2.name + ')' as col1
from
sys.foreign_keys fk
inner join
sys.foreign_key_columns fkc ON fk.object_id = fkc.constraint_object_id
inner join
sys.columns c1 ON fkc.parent_column_id = c1.column_id and c1.object_id = fkc.parent_object_id
inner join
sys.columns c2 ON fkc.referenced_column_id = c2.column_id and c2.object_id = fkc.referenced_object_id
public void ReinstateAllConstraints()
{
string[] reinstateAllConstraints = File.ReadAllLines(@"Utility\UnsafeStrings\reisntateconstraint.txt");
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
foreach (var item in reinstateAllConstraints)
{
var command = new SqlCommand(item, connection);
command.ExecuteNonQuery();
}
connection.Close();
}
}
您删除的依赖关系,或者你不截断在别处引用的记录。不知道这里有什么问题。 – Will
@Will我如何确保一旦删除了依赖关系,所有的依赖关系都会被恢复? –
如果记录X取决于记录Y,那么您只能删除X和Y或将它们留下。你不能删除Y并离开X. – Will