LINQ - 无法使用已在使用的密钥添加实体

时间:2015-07-24 07:32:25

标签: wpf linq linq-to-sql

我有一个表Unit,其中包含两列UnitName n UnitDescriptionUnitName是主键n我已在UnitName添加了唯一名称约束。 现在,当我通过我的应用程序使用linq添加数据时,如果我添加一个重复的单元名称并且不在数据库中添加数据,则会捕获duplicate key exception,但此后即使添加唯一的单元名称,它仍会捕获duplicate key exception并给我一个关于name existing的消息对话框,但它在数据库中添加了数据。为什么会这样呢?

DemoDataContext DC = new DemoDataContext();

ObservableUnit Ob_unit;

private void btn_save_unit()
{
    try
    {
         tbl_unit unit = new tbl_unit();
         unit.unitname = txt_unit name.Text();
         DC.tbl_unit.InsertOnSubmit(unit);
         Ob_unit.Add(unit);
         DC.SubmitChanges();
     }
      catch(DuplicateKeyException)
      {
          Message.Show(message);
      }
 }

 class ObservableUnit : ObservableCollection<tbl_unit>
 {
     public ObservableUnit(DemoDataContext DDC)
     {
           foreach (tbl_unit thisUnit in DDC.tbl_units)
           {
                 this.Add(thisUnit);
            }
      }
}

DC由linq自动创建,DataContext Ob_unitObservableCollection tbl_Unit全局声明

Plz告诉我如何解决它。谢谢你

0 个答案:

没有答案