minato128 blog

minato128の公開メモ帳です。

Entity Framework + Oracle で自動採番できるのか調べた

2014-12-17 追記

この記事書いたとき、OracleとEFのバージョン書いてなくてアレなのですが、
Oracle は 11gR2だったかと思います。
ちなみに、12cだとカラムのデフォルト値にシーケンスを指定できるようになりました。

Oracleでデフォルト値にシーケンスを設定したい | Siguniang's Blog

完全に余談ですが、このとき自分が何考えて書いたのかわからないのですが、別にTriggerでもいいよなあ。4年前くらいに書いたものだと思ってたけど、意外と最近でびっくり。考え方変わるもんだなあ。

EFも進化しているし、ソフトウェア技術進歩早いのでバージョン書かないと何の役にも立たないなと改めて思いました。気をつけます。
追記ここまで


column のプロパティを StoreGeneratedPattern="Identity" にして、
Oracle の Trigger 作れば可能。

ちなみにシーケンスを直接呼ぶことができないので、
手動で採番する場合は MAX+1 みたいなことするのでしょう。
自分だったらきっと Trigger 作るくらいなら(保守性を考慮して)手動にする。*1


DBFlute は sequenceDefinitionMap.dfprop で設定できるし、
シーケンスを直接取得することもできるのに。。。

*1:そもそもその前にEF+Oracleという構成が採用されないように頑張るけど