0

Entity Framework 4.0 の Code First 機能で使用される POCO を定義しています。

データの一部は外部ソースから取得されます。そのデータについては、ID 列の値を外部ソースの値と同じに保つ必要があり、ID を自分で設定する必要がある場合があります。しかし、同じエンティティの場合、ID がない場合があり、自動インクリメントのような動作が必要です。

値を設定するとそれが使用され、そうでない場合は自動インクリメントされるように POCO を定義することは可能ですか? このmySQLフォーラムの回答によると、 mySQLはこのシナリオをかなりうまく処理するはずですが、エンティティフレームワークではそうではないようです...

4

2 に答える 2

0

あなたが探しているのはIdentityInsertだと思います。

このリンクを確認してください:EF4でのIDENTITY_INSERTの使用

POCOをそのように定義することに関しては、それがあなたの意図が何であるかを自動的に知ることになるでしょう-私はそれが可能ではないと思います。挿入を行うときは、それを明示的に設定する必要があります。

私が行うことは、EFを使用してテーブルに対して生のSQLを実行することです。ここで、Identity Insert = ONを設定し、そこにいくつかの行を挿入してから、offに戻します。

自動インクリメントIDは、最終的に手動挿入で使用したのと同じ値になる可能性があることを考慮に入れてください。これにより、本質的にプログラムが破損します。

よろしく、ラリ

于 2012-07-26T11:33:58.000 に答える
0

Lari の回答に続いて、identity_insert をオンに設定し、レコードを挿入してからオフにするストアド プロシージャを作成することをお勧めします。

次に、それを関数インポートとしてインポートし、それをおそらくエンティティ型自体の拡張メソッド内で使用するか、オブジェクト コンテキストの関数として使用します。

そうすれば、標準を作成できます:

var user = new User("John"); 
entities.Add(user);
entities.SaveChanges(); 

自動インクリメント番号を使用する場合は、thing と入力してから、次のようなものを使用します。

entities.CreateUser("John"); // This would be the SP

そうすれば、条件付きでいずれかの方法を使用できます。自動ではありませんが、どちらかを使用できるようになります。

于 2012-07-26T11:46:49.097 に答える