0

SQL Server CE 3.5 をデータ ストアとして使用する Entity Framework 4 ベースのアプリを作成しています。

Entity Data Model から作成されたスクリプトで生成された空の.sdfファイルがあります。.sqlce

このコードを実行すると:

Item item = new Item();
item.ID = 1;
item.Title = "example";
item.Value = 37;

using (ModelContainer context = new ModelContainer())
{
    context.ItemsSet.AddObject(item);

    context.SaveChanges();
}

SaveChages()私はこれを得るSystem.Data.UpdateException

サーバーで生成されたキーとサーバーで生成された値は、SQL Server Compact ではサポートされていません。

この質問から、Entity Framework で使用する場合、SQL Server CE 3.5 は自動生成された主キーをサポートしないことがわかります。ただし、私の場合は、追加するアイテムの ID 属性を明示的に設定します。

他に何か問題がありますか?

編集:

これは、.sqlce削除後のスクリプトの内容IDENTITY(1,1)です。

-- Creating table 'ItemsSet'
CREATE TABLE [ItemsSet] (
    [ID] int NOT NULL,
    [Title] nvarchar(4000)  NOT NULL,
    [Value] int NULL
);
GO

-- Creating primary key on [ID] in table 'ItemsSet'
ALTER TABLE [ItemsSet]
ADD CONSTRAINT [PK_ItemsSet]
    PRIMARY KEY ([ID] );
GO
4

1 に答える 1

1

データベースで自動インクリメントに設定した場合、コードからIDを明示的に設定しても何も起こりません。uniqueidentifier を使用するか、テーブルの主キーを変更して自動インクリメントを削除することができます。次に、Id をコードの値に設定できます。このスレッドを確認してくださいサーバーで生成されたキーとサーバーで生成された値は、SQL Server Compact ではサポートされていません

于 2012-04-05T18:28:37.277 に答える