0

VS2010 を使用して、2 つの単純なテーブルを持つ 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 アプリケーションが終了するだけです。

try / catch は役に立ちません。

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

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

一意のインデックスを削除すると、コードは正常に機能します。

なぜこれが起こるのですか?

マンフレッド

4

1 に答える 1

1

これは LINQ to SQL on Windows Phone のバグです... インデックスが重複しています (主キー定義もインデックスを追加します) - 私のブログ投稿を参照してください: http://erikej.blogspot.com/2012/04/windows -phone-local-database-tip.html . 自動生成された値を取得するには、主キーを設定するだけでは不十分です。ypou は列を IDENTITY として定義する必要があります。

于 2012-05-05T11:01:22.750 に答える