0

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

两者都有一列TheID(int)。一方面,我将唯一设置为 true,另一方面则没有。

我在此列上设置了主键。

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 创建数据上下文。

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

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

尝试/捕获没有帮助。

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

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

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

任何想法为什么会发生这种情况?

曼弗雷德

4

1 回答 1

1

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

于 2012-05-05T11:01:22.750 回答