2011-01-08 11 views
3
VS 2008, SqlCe 3.5 

EntityFrameworkを学習しようとしていますが、基本的な挿入と更新が機能しません。 SqlCeデータベース(.sdf)をインクルードすると、ウィザードによってTest.edmx/designer.vbファイルが作成されます。それから、私は以下のように私のdatacontextを作成します。テーブル名はUsersです。SqlCeとEntityFrameworkを使用した挿入と更新の構文

私のエンティティクラスの構文は、ウェブ上の例と少し違うようです。それはちょっと混乱していて、なぜこれがわからないのですか?

An error occurred while updating the entries. See the InnerException for details. 

{「サーバー生成キーおよびサーバ生成された値は、SQL Server Compactのサポートされていません。」}

:私は2つの異なる挿入方法を示す下にその両方が.SaveChangesライン上の例外を提供します

また、私は本当に。これらの問題に関するいくつかの援助のために非常に喜んでいるだろう何欠けている部分に書き込むための見当がつかないUpdateメソッド...

Public Sub Insert(ByVal user As Users) 
    Dim ctx As New TestDBEntities1(connection) 
    ctx.Users.Context.AddObject("Users", user) 
    ctx.Users.Context.SaveChanges() 
End Sub 

Public Sub Insert(ByVal user As Users) 
    Dim ctx As New TestDBEntities1(connection) 

    ctx.AddToUsers(user) 
    ctx.SaveChanges() 
End Sub 


Public Sub Update(ByVal user As Users) 
    Dim ctx As New TestDBEntities1(connection) 
    Dim q = (From n In ctx.Users Where n.Id = user.Id Select n).Single 

    ' How to update ?? 

    ctx.SaveChanges() 
End Sub 
+0

http://stackoverflow.com/questions/2734424/c-4-0-ef-server-generated-keys-and-server-generated-values-are-not-supported-bの複製であるように見えます。 – SilverbackNet

+0

それはどういう意味ですか? IDキーではない場合、自動生成された整数IDを持つことはできませんか?私は作成し、ハードコーディングによってそれらを更新し続ける必要がありますか? – bretddog

+1

あなたは本当に鍵の作成を自分で処理する必要があります。 (私はそれらを「更新」しようとは勧めない)。 SQLS Compactではキーを生成できないため、ストアの生成に関するすべての機能は動作しません。上記のリンクで説明したGUIDアプローチを使用するか、テスト用に別のデータベースに切り替えるか、CE .NET 3.5のSQLiteなどの無料データベース用のバインディングが存在します。 – Marcanpilami

答えて

0

上記のように、これはSQL CE 4.0で修正されました。

1

私たちは、

Entity Frameworkのを使用して、 エンティティのキ​​ーが生成されたサーバー としてマークすることができる:LLこのMicrosoft TechNet articleによると、彼らはこれを言います。これにより、データベース は、 挿入またはエンティティ作成時にキーの値を生成できます。 さらに、エンティティのゼロ個以上のプロパティ は、 というサーバ生成値としてマークされます。 の詳細については、Entity Framework のドキュメントのStore Generated パターンのトピックを参照してください。

それは、エンティティ フレームワークで使用されるとき、エンティティ Frameworkは、サーバー生成キーまたは 値を持つエンティティ タイプを定義することができますが、SQL Server Compactのは、サーバー生成キーまたは 値を持つ エンティティをサポートしていません

。 のデータ操作操作サーバーで生成された 値を持つエンティティは、 "サポートされていません" 例外をスローします。

ただし、いくつかのオプションがあります。ユニークIDENTIFIERを使用することも、bigint/int型の独自のキーを生成することもできます。そのための最善の解決策は、そのテーブルの現在のIDを読み取って1ずつインクリメントすることです。

関連する問題