C# .net数据集主键-强制唯一性?
我有一个带有几个数据表的小数据集。我从各种数据库加载数据表,并读取一个配置文件,以确定要在给定数据表上强制执行的主键。如果配置不包含正确的(非唯一的)主键,那么在将主键应用于datatable时如何捕获此事件?目前,它似乎允许我应用主键,即使它不是唯一的C# .net数据集主键-强制唯一性?,c#,.net,datatable,dataset,primary-key,C#,.net,Datatable,Dataset,Primary Key,我有一个带有几个数据表的小数据集。我从各种数据库加载数据表,并读取一个配置文件,以确定要在给定数据表上强制执行的主键。如果配置不包含正确的(非唯一的)主键,那么在将主键应用于datatable时如何捕获此事件?目前,它似乎允许我应用主键,即使它不是唯一的 DataTable dtbl = ds.Tables[t.tblname]; DataColumn[] pks = new DataColumn[t.Get_Key_Columns().Count];
DataTable dtbl = ds.Tables[t.tblname];
DataColumn[] pks = new DataColumn[t.Get_Key_Columns().Count];
int i = 0;
foreach(DataColumn c in dtbl.Columns)
{
if(t.Get_Key_Columns().Exists(delegate(App_Column ac)
{return (ac.column_name == c.ColumnName);}))
{
pks[i] = c;
i++;
}
}
try
{
dtbl.PrimaryKey = pks;
}
catch etc.......
有人指出我遗漏了什么吗?谢谢作为约束添加它们怎么样
dt.Constraints.Add("PKC", Columns, true)
如果仍然允许重复,那么.HasErrors属性是否提供任何指示
从评论中编辑:
最终对OP起作用的是这种变通方法:在填充表格之前添加约束 尝试{UniqueConstraint uc=new UniqueConstraint(“pk”,pks,true);dtbl.Constraints.Add(uc);}在应用每个表的pk之后,我检查了HasErrors及其false。(已检查数据集和数据表属性)。。。。我甚至调用AcceptChanges()…数据集从数据源填充,然后我应用键。。数据集上是否有一些属性需要设置以启用约束?在应用主键后是否可以插入一个副本?正在构建数据集架构-然后应用键-然后加载数据以进行尝试…我首先使用了Fill_schema,应用PKs,然后进行填充并引发异常-谢谢。。。