我可以在C#中的DataTable
上拥有群集密钥吗?
在我的代码中要求对3列的可能组合进行约束以使其成为唯一的.....
答案 0 :(得分:5)
您需要的是DataTable
上的唯一约束。 群集密钥是SQL Server磁盘上的功能,不适用于DataTable
。
结帐MSDN doc on DataTable constraints:
UniqueConstraint对象可以分配给DataTable中的单个列或列数组,可确保指定列或列中的所有数据每行唯一。您可以使用UniqueConstraint构造函数为列或列数组创建唯一约束。
所以尝试这样的事情:
// this is your DataTable
DataTable custTable ;
// create a UniqueConstraint instance and set its columns that should make up
// that uniqueness constraint - in your case, that would be a set of *three*
// columns, obviously! Adapt to your needs!
UniqueConstraint custUnique =
new UniqueConstraint(new DataColumn[] { custTable.Columns["CustomerID"],
custTable.Columns["CompanyName"] });
// add unique constraint to the list of constraints for your DataTable
custTable.Constraints.Add(custUnique);
这应该适合你!
答案 1 :(得分:0)
要使列强制执行UNIQUE约束,您可以使用
DataTable dt = new DataTable();
dt.Columns.Add("UniqueColumn");
dt.Columns["UniqueColumn"].Unique = true;
解决方案二
如果您希望某些列中某些值的组合具有唯一值,则可以尝试此操作。
DataTable dt = new DataTable();
dt.Columns.Add("UniqueColumn1");
dt.Columns.Add("UniqueColumn2");
dt.Columns.Add("UniqueColumn3");
dt.Columns.Add("NormalColumn");
string
value1 = string.Empty,
value2 = string.Empty,
value3 = string.Empty,
value4 = string.Empty;
//Logic to take values in string values variables goes here
DataRow[] founded = dt.Select("UniqueColumn1 = '"+ value1+
"' and UniqueColumn2 = '"+value2+
"' and UniqueColumn3 = '"+value3+"'");
if (founded.Length > 0)
// Message to say values already exist.
else
// Add a new row to your dt.
在此代码中,您检查DT中存在的数据以强制执行唯一性