मैं एक सी # यूनिट परीक्षण लिख रहा हूं जो लक्ष्य डेटाबेस के विरुद्ध एक ओआरएम कक्षा के लिए स्ट्रिंग गुणों को मान्य करता है, हमेशा SQL 2008, और वह डेटा जो डेटा मैप करता है।एसक्यूएल 2008 - INFORMATION_SCHEMA में विदेशी कुंजी बाधाएं
जाँच हो रही है कि एक निर्दिष्ट विदेशी कुंजी डीबी में मान्य है आसान है:
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());
}
अब निम्नलिखित विदेशी कुंजी रिश्ते ले:
मेरा प्रश्न: मैं कैसे क्वेरी है 'प्राथमिक/अद्वितीय कुंजी बेस तालिका' और 'प्राथमिक/अद्वितीय कुंजी कॉलम' पक्ष से संबंध? मैं इन्हें INFORMATION_SCHEMA विचारों में संदर्भित नहीं देख सकता।
धन्यवाद जम्मू
बहुत खूब! धन्यवाद। –