Ich schreibe einen C# -Einheitstest, der String-Eigenschaften für eine ORM-Klasse gegen die Zieldatenbank, immer SQL 2008, und die Klasse, der die Daten zugeordnet sind, überprüft.SQL 2008 - Fremdschlüsseleinschränkungen in der INFORMATION_SCHEMA-Ansicht
Überprüfen, ob ein bestimmte Fremdschlüssel in der DB gültig ist einfach:
static private bool ConstraintExsits(string table, string column, ConstraintType constraintType)
{
string constraintTypeWhereClause;
switch (constraintType)
{
case ConstraintType.PrimaryKey:
constraintTypeWhereClause = "PRIMARY KEY";
break;
case ConstraintType.ForeignKey:
constraintTypeWhereClause = "FOREIGN KEY";
break;
default:
throw new ArgumentOutOfRangeException("constraintType");
}
var cmd = new SqlCommand(
@"SELECT a.CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS a
JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE b on a.CONSTRAINT_NAME = b.CONSTRAINT_NAME
WHERE a.TABLE_NAME = @table AND b.COLUMN_NAME = @column AND a.CONSTRAINT_TYPE = '" + constraintTypeWhereClause + "'",
Connection);
cmd.Parameters.AddWithValue("@table", table.Trim('[').Trim(']'));
cmd.Parameters.AddWithValue("@column", column.Trim('[').Trim(']'));
return !string.IsNullOrEmpty((string)cmd.ExecuteScalar());
}
nun die folgenden Fremdschlüsselbeziehungen nehmen:
Meine Frage: Wie abfragen mir die Beziehung von der Seite 'Primäre/Eindeutige Basistabelle' und 'Primäre/Eindeutige Schlüsselspalten'? Ich kann diese referenzierten in den INFORMATION_SCHEMA Ansichten nicht sehen.
Dank J
Fantastic! Vielen Dank. –