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)


Ответы (0 шт):