4

数値として定義された ID 列を持つ Oracle データベースでは、次のようになります。

ここに画像の説明を入力

...およびテーブルの対応するシーケンス...:

ここに画像の説明を入力

ID 列がシーケンスの次の値を取得するようにするにはどうすればよいですか?

using (var db = new MyOracleDb()){
    var user= new User(){ first_name = 'Abe', last_name = 'Lincoln'};
    //Do something here with the sequence and set the ID?
    db.User.Add(user);
    db.SaveChanges();
}

最新の Oracle.ManagedDataAccess と Oracle.ManagedDataAccess.EntityFramework + EF6x を使用しています。

4

4 に答える 4

5

Oracle には自動インクリメントがないため、これは EF の問題ではありません。シーケンス値を手動で取得するか、トリガーを作成して設定する必要があります。

アップデート

シーケンス値を取得するには、2 つのオプションがあります。値を返すストアド プロシージャを作成するか、生の SQL を呼び出す .Net 関数 (実際には関数内にある必要はありません。単純です) を作成します。これ:

Database.SqlQuery<int>("SELECT SEQ_SOMESEQ.NEXTVAL FROM dual");

私は個人的にオラクル関数とEFに多くの問題を抱えていたので、生のSQLを使いました。

于 2016-11-02T14:54:42.610 に答える