自动生成的SQL Server Compact Keys的问题

时间:2012-05-04 14:31:38

标签: windows-phone-7

我使用VS2010生成一个带有两个简单表的SQL Server Compact数据库。

两者都有一列TheID(int)。在一个我设置唯一的真实而另一个没有。

我在这个专栏上设置了主键。

CREATE TABLE [TestTab] (
  [TheID] int NOT NULL
, [TheVal] nvarchar(100) NOT NULL
);
GO

ALTER TABLE [TestTab] ADD CONSTRAINT [PK_TestTab] PRIMARY KEY ([TheID]);
GO

对于另一个(在列上有唯一设置),我得到:

CREATE TABLE [TestTab2] (
  [TheID] int NOT NULL
, [TheVal] nvarchar(100) NOT NULL
);
GO

ALTER TABLE [TestTab2] ADD CONSTRAINT [PK_TestTab2] PRIMARY KEY ([TheID]);
GO

CREATE UNIQUE INDEX [UQ__TestTab2__00000000000033E9] ON [TestTab2] ([TheID] ASC);
GO

接下来,我使用SQL Server Compact Toolbox创建一个datacontext。

选择数据工作正常 - 但是当我尝试更新代码时,它会在dc.SubmitChanges()上断开。

只是我的WP7应用程序结束了。

try / catch没有帮助。

TestTab tT = (from A in dC.TestTabs select A).FirstOrDefault();

if(tT != null) {
    tT.TheText += "1";
    dC.SubmitChanges();
}

如果我删除唯一索引,代码就可以正常工作。

为什么会发生这种情况?

曼弗雷德

1 个答案:

答案 0 :(得分:1)

它是Windows Phone上的LINQ to SQL错误...您的索引是重复的(主键定义也添加索引) - 请参阅我的博客文章:http://erikej.blogspot.com/2012/04/windows-phone-local-database-tip.html。要获取自动生成的值,设置主键是不够的,ypou也必须将列定义为IDENTITY。