2

EntityFramework4.0のCodeFirst機能で使用されるPOCOを定義しています。

しかし、私のデータは外部ソースからのものであり、ID列を外部ソースの列と同じに保ちたいので、自分でIDを設定したいと思います。

DbContext.Add()とcontext.SaveChanges()を呼び出す前に、コードでIDを設定していますが、ID値は無視され、DB列で定義された自動インクリメント(AI)によって設定されます。

DBはmySQLであり、EFによって自動生成されました。

ID列にAI属性が作成されないようにする方法、または列がそのように定義されているにもかかわらずエンティティIDを明示的に設定する方法を知っている人はいますか?

編集:@flemから得た答えは私のために働きます。しかし、同様に機能するために少し異なるシナリオが必要です。POCOを、値を設定するとそれを使用し、設定しない場合は自動的にインクリメントするような方法で定義することは可能ですか?このmySQLフォーラムの回答によると、 mySQLはこのシナリオをかなりうまく処理するはずですが、エンティティフレームワークはそうではないようです...

4

1 に答える 1

7

データベース生成を[なし]に設定します。

[Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
public int Id { get; set; }
于 2012-07-23T12:11:46.880 に答える