NHibernate не создаёт схему базы данных
Имеются две сущности
public class Country : IEntity
{
[Obsolete("Only for reflection", true)]
public Country()
{
}
public Country(string name)
{
if (string.IsNullOrWhiteSpace(name))
throw new ArgumentException("Value cannot be null or whitespace.", nameof(name));
Name = name;
}
public virtual long Id { get; private set; }
public virtual string Name { get; private set; }
}
public class City : IEntity
{
[Obsolete("Only for reflection", true)]
public City()
{
}
public City(string name, Country country)
{
if(string.IsNullOrWhiteSpace(name))
throw new ArgumentException("Value cannot be null or whitespace.", nameof(name));
Name = name;
Country = country ?? throw new ArgumentNullException(nameof(country));
}
public virtual long Id { get; private set; }
public virtual string Name { get; private set; }
public virtual Country Country { get; private set; }
}
Также я сделал маппинг для этих сущностей используя Fluent NHibernate
public class CountryMap : ClassMap<Country>
{
public CountryMap()
{
Table("Countries");
Id(x => x.Id, "CountryId");
Map(x => x.Name, "CountryName").Length(255);
}
}
public class CityMap : ClassMap<City>
{
public CityMap()
{
Table("Cities");
SchemaAction.None();
Id(x => x.Id, "CityId");
Map(x => x.Name, "CityName").Length(255);
HasOne(x => x.Country).Cascade.All().Constrained();
}
}
Далее мне надо заинициализировать NH. Для этого я выделил отдельный класс NHibernateInitializer
public class NHibernateInitializer
{
private readonly string _connectionString;
public NHibernateInitializer(string connectionString)
{
_connectionString = connectionString;
}
private static bool ShouldExpose => true;
private IPersistenceConfigurer GetDatabaseConfiguration() =>
PostgreSQLConfiguration
.Standard
.Dialect("PostgreSQL82Dialect")
.ConnectionString(_connectionString);
private void Expose(Configuration configuration)
{
if (ShouldExpose)
{
new SchemaExport(configuration).Create(true, true);
}
}
public Configuration GetConfiguration()
{
return Fluently.Configure()
.Database(GetDatabaseConfiguration)
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<NHibernateInitializer>())
.ExposeConfiguration(Expose)
.BuildConfiguration();
}
}
И все зависимости регистрирую через Autofac.
public class PersistenceModule : ConfiguredModule
{
protected override void Load(ContainerBuilder builder)
{
string connectionString = Configuration.GetConnectionString("DefaultConnection");
builder
.RegisterGeneric(typeof(AsyncRepository<>))
.As(typeof(IAsyncRepository<>))
.InstancePerDependency();
builder
.RegisterType<ExpectCommitScopedSessionProvider>()
.As<ISessionProvider>()
.As<IExpectCommit>()
.InstancePerLifetimeScope();
builder
.RegisterType<NHibernateInitializer>()
.AsSelf()
.SingleInstance()
.WithParameter("сonnectionString", connectionString);
builder
.Register(context =>
context.Resolve<NHibernateInitializer>().GetConfiguration().BuildSessionFactory())
.AsImplementedInterfaces()
.SingleInstance();
}
}
Почему у меня не создаётся схема бд? Ссылка на полный проект: https://github.com/Fufelschmerz/Content Второй день уже бьюсь над этой проблемой, help)