如果说联合主键是为了多列来确定唯一性,可是下面的情况程序不让!!!
fRoleOpPowerMemTable.PrimaryKey = new DataColumn[] { 
    fRoleOpPowerMemTable.Columns["ModelGUID"],
    fRoleOpPowerMemTable.Columns["SysPowerID"],
};
事情是这样发生的:
  原本有需要从DataTable.Select(vFilter)来涮选数据,可太慢,就给它设了主键(这里的情况不得不用联合主键),设置完再给表里填充数据报错了!
  --列“ModelGUID”被约束为是唯一的。值“{F17F0FD9-F8D6-45B4-BC20-262834C3407D}”已存在。  --这些列当前不具有唯一值。

解决方案 »

  1.   

    ModelGUID”被约束为是唯一的
    这些列当前不具有唯一值。 
    ==============================
    表内已经有记录了吧?
    看看表中的值,这两个列的组合是否满足主键的唯一性要求
      

  2.   

    primary key或者unique key必须保证是唯一的。--列“ModelGUID”被约束为是唯一的。值“{F17F0FD9-F8D6-45B4-BC20-262834C3407D}”已存在。 
    --这些列当前不具有唯一值。
     
    楼主提及的问题,虽然不会经常出现,但偶尔在特殊的条件下,也会产生那样的现象。你可以删除造成不能唯一的一些记录(要小心,不要删除错了),如果有几条记录是相同的,那么就让这几条记录只身下一条(删除时要用rowid作为条件,rowid是肯定不会一样的,这是Oracle的特有的)顺便提一下:在SQL Server这样的数据库中,如果存在两条完全相同的记录就没有办法删除其中一条记录(这种现象在特殊的情况下会出现的,兄弟就碰到过这样的情况),要么全部删除这2条记录,要么全部保留这2条记录,在Oracle中则可以通过rowid来删除其中一条。