2012-05-04 6 views
0

VS2010を使用して、2つの単純なテーブルを使用してSQL Server Compactデータベースを生成します。自動生成されたSQL Server Compactキーに関する問題

両方とも列TheID(int)です。 1つは、私は他の人には当てはまりません。

この列にプライマリキーを設定しました。その他については

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 

次へ]を、私はDataContextのを作成するために、SQL Server Compactのツールボックスを使用します。

データの選択は問題ありませんが、コードを更新しようとすると、dc.SubmitChanges()が壊れます。

私のWP7アプリケーションが終了します。

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

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

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

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

これはなぜ起こりますか?

マンフレッド

+0

最新のSQLツールボックスエクステンションがインストールされていますか? –

+0

おそらく同じ問題がありました。 http://stackoverflow.com/questions/8622896/windows-phone-7-sqlce-rowversion –

+0

はい最新バージョンがインストールされています 生成されたクラスはきれいでシンプルに見えます 2.6.2.1がインストールされています はいあなたがリンクした同じ問題のように見えます – ManniAT

答えて

1

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

+0

ありがとうございます - これは私の検索を停止します:) 自動生成された値はまったく問題ありません。 唯一の問題は、 "Double Index thing"です - 再度ありがとう – ManniAT

関連する問題