EF 4.3 Code-First データベースのデータベース作成スクリプトをプログラムで作成したいと考えています。データベースは、標準の DatabaseInitializer メカニズムを使用して正常に作成されますが、次のコードは失敗します。
using(var dc = new MyContext())
{
var objContext = (IObjectContextAdapter)dc;
var script = objContext.ObjectContext.CreateDatabaseScript();
}
私が得る例外は次のとおりです。
ストア生成パターン 'Computed' は、タイプ 'timestamp' または 'rowversion' ではないプロパティではサポートされていません。
タイプ「文字列」の定義された計算列がありますが、私が言ったように、データベースは組み込みのDatabaseInitializerを介して作成されたときにうまく作成されます。奇妙なことに、このメソッドを使用して結果として得られるスキーマは、実際には計算列を作成しません。
なぜこれを行っているのかというと、この列を削除して真正な計算列を作成する作成後を実行するスクリプトがあります。EF マッピングで計算された列を指定しないと、挿入時にその列に値を割り当てようとしますが、失敗します。