Uygulamayı her çalıştırdığımda veritabanına yansıtmak istediğim varlık modelim var, ancak verileri temizlemedenNhibernate SchemaUpdate işlevselliğini kullanarak sütun nasıl değiştirilir
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);
hemen hemen her zaman doğru. Sorun, bir özelliğin tanımını değiştirdiğimde,
[CustomSqlType("nvarchar(400)")]
public virtual string Name { get; set; }
CustomSqlType
gibi özelliklerin eşleme yapıldığında belirli bir sözleşmeyle uygulanacak bir özellik olduğunu söyleyeceğim. Bu durumda, Name özelliği nvarchar(400)
alanı olarak oluşturulacaktır. Ama eğer gelecekte bu
[CustomSqlType("nvarchar(500)")]
public virtual string Name { get; set; }
değerini değiştirdiğimde doğru hbm.xml dosyası oluşturulacak (doğru araç nvarchar (500)) ancak veritabanındaki sütun güncellenmiş bir olay değil ancak bu değişiklik geçerli db perspektifinden. SchemaUpdate
kullanarak varolan sütunu yeni uzunluk/hassasiyet/null kısıtlama ile değiştirmek mümkün mü?
Bu gerçekten kokuyor. Şemanızdaki bir güncellemeyi zorlamak için ne yaptın? – Mithon
teşekkürler! Varsayılan kısıtlamalarımı neden güncellemediğini anlamaya çalışırken yaşlarımı harcadım! - Geçici bir çözüm buldun mu? – Zack