私はアプリケーションを実行するたびにデータベースに反映されるエンティティモデルを持っていますが、データをクリアしないので、私は流暢なnhibernateマッピングメソッドを使ってSchemaUdpate
を使用していますnhibernate SchemaUpdate機能を使用して列を変更する方法
var config = Fluently.Configure().Database
(MsSqlConfiguration.MsSql2008.ConnectionString(connectionString));
//here I add mappings , apply conventions, build configuration, etc...
//
new SchemaUpdate(configuBuild).Execute(doUpdate: true, script: true);
したがって、正確にほとんどすべての時間。問題は、プロパティの定義を変更すると、そのプロパティがあると言うことができます。
[CustomSqlType("nvarchar(400)")]
public virtual string Name { get; set; }
CustomSqlType
は、マッピングがロードされるときに特定の規則によって適用される属性です。この場合、Nameプロパティはnvarchar(400)
フィールドとして作成されます。しかし、将来、この
[CustomSqlType("nvarchar(500)")]
public virtual string Name { get; set; }
に正しいhbm.xmlファイルが生成される(正しいことはnvarchar(500)を意味する)が変更されても、 dbの観点から。 SchemaUpdate
を使用して、既存の列を新しい長さ/精度/ NULL可能な制約で変更(変更スクリプトを生成)することは可能ですか?
それは本当に悪臭を放つ。スキーマを更新するために何をしましたか? – Mithon
ありがとう!なぜ私のデフォルトの制約を更新していないのかを調べようと、年を重ねてきました! - 回避策を見つけることができましたか? – Zack