Я новичок в nHibernate и Fluent nHibernate, и у меня большие проблемы с простой настройкой чего-либо.
private static ISessionFactory CreateSessionFactory()
{
return FluentNHibernate.Cfg.Fluently.Configure()
.Database(
FluentNHibernate.Cfg.Db.MsSqlConfiguration.MsSql2008
.ConnectionString(@"MultipleActiveResultSets=True;Data Source=.\SQLEXPRESS;Initial Catalog=nHibernate;Integrated Security=True;Pooling=False"))
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<Program>())
.ExposeConfiguration(BuildSchema)
.BuildSessionFactory();
}
private static void BuildSchema(NHibernate.Cfg.Configuration config)
{
// this NHibernate tool takes a configuration (with mapping info in)
// and exports a database schema from it
new SchemaExport(config)
.Drop(false, true);
new SchemaExport(config)
.Create(false, true);
}
Этот метод (взятый частично из собственных образцов) создает базу данных. Это все хорошо и хорошо ...
Но у меня есть несколько схем в моей базе данных, например ..
dbo
.
Sheets.Traits
Sheets - это схема. Итак, в классе SheetsMap
у меня есть ...
public class SheetMap : ClassMap<Sheet>
{
public SheetMap()
{
Id(x => x.Id);
HasManyToMany(x => x.Traits)
.ParentKeyColumn("Sheet")
.ChildKeyColumn("Trait")
.Cascade.All()
.Schema("Sheets")
.Table("Traits");
Table("Sheets");
}
}
Но это выдает ошибку во время выполнения. Есть идеи, что мне делать? Я действительно не понимаю 99% того, как все это должно работать.
Я получаю ошибку ...
An invalid or incomplete configuration was used while creating a SessionFactory. Check PotentialReasons collection, and InnerException for more detail.
{"The specified schema name \"Sheets\" either does not exist or you do not have permission to use it."}
По сути, мне нужно знать, как заставить строителя создать эту схему, когда он выполняет сценарий. Я уверен, что проблема именно в этом.