Я создаю свой SessionFactory так:
_configuration = LoadConfiguration(configFile);
if (_configuration == null)
{
Fluently.Configure()
.Database(configurer.GetConfigurer())
.Mappings(m => m.AutoMappings
.Add(AutoMap
.AssemblyOf<Entity>()
.IgnoreBase<Entity>()))
.ExposeConfiguration(cfg => _configuration = cfg)
.BuildConfiguration();
ConfigureNhibernateValidator();
SaveConfiguration(configFile);
}
UpdateSchema();
Где мой schemaupdater такой:
public bool UpdateSchema(ISession session = null)
{
try
{
SchemaValidator val = new SchemaValidator(_configuration, new Settings());
val.Validate();
return false;
}
catch
{
SchemaExport export = new SchemaExport(_configuration);
if (session == null) // To be usefull with SQLite InMemory db
export.Execute(true, true, false);
else
export.Execute(true, true, false, session.Connection, null);
return true;
}
}
И мой конфигуратор валидатора выглядит так:
private void ConfigureNhibernateValidator()
{
var provider = new NHibernateSharedEngineProvider();
NHibernate.Validator.Cfg.Environment.SharedEngineProvider = provider;
var nhvConfiguration = new NHibernate.Validator.Cfg.Loquacious.FluentConfiguration();
nhvConfiguration
.SetDefaultValidatorMode(ValidatorMode.OverrideAttributeWithExternal)
.Register(Assembly.GetAssembly(typeof(Entity))
.ValidationDefinitions())
.IntegrateWithNHibernate
.ApplyingDDLConstraints()
.RegisteringListeners();
ValidatorEngine validatorEngine = provider.GetEngine();
validatorEngine.Configure(nhvConfiguration);
ValidatorInitializer.Initialize(_configuration, validatorEngine);
}
Я аннотировал некоторые из своих свойств объекта clr с помощью NotNull, Length (1024) и т. Д. Это нормально экспортируется в мою базу данных. Когда я что-то изменяю в моей сборке Entity, мой метод LoadConfiguration возвращает null, и генерируется новая конфигурация.
Моя проблема заключается в том, что если я изменяю Length (1024) на Length (2048), атрибут, который влияет на схему, вызов SchemaValidator.validate не вызывает исключение, и поэтому моя база данных не обновляется для отображения схемы. Что приводит меня к моему вопросу ...
Как я могу узнать, что моя база данных нуждается в обновлении для отражения моих аннотаций валидации?