У меня есть приложение, обращающееся к двум базам данных, и оно работает нормально, и мои тесты проходят, за исключением случаев, когда он пытается экспортировать текущую схему БД, он выводит все для обеих БД в одном блоке, и когда он пытаетсяпроверяя цепочку объектной модели / схемы БД, она пытается найти в одной базе данных все, когда один класс (который является внешними данными, следовательно, внешней БД) не должен отображаться.Я предоставил переопределение сопоставления для класса, чтобы NH мог правильно загружать / использовать данные из внешней БД (только для чтения), но теперь, когда я экспортирую свою схему, он пытается создать эту таблицу.
Iпробовал IgnoreBase(typeof(Unit))
, но это не имеет никакого эффекта (тогда как IgnoreBase(typeof(Entity))
работает правильно).Я украсил пользовательские методы репозитория [SessionFactory(DataGlobals.FOREIGN_DB_FACTORY_KEY)]
, где он просто определяет постоянную строку для использования в качестве ключа для SessionFactory
, но я уверен, что если мне нужно что-то, чтобы украсить класс (Unit
) с помощью илипередать другой параметр SchemaExport
...
public void CanGenerateDatabaseSchema(){
var session = NHibernateSession.GetDefaultSessionFactory().OpenSession();
using (TextWriter stringWriter = new StreamWriter("../../../../db/schema/UnitTestGeneratedSchema.sql"))
{
new SchemaExport(configuration).Execute(true, false, false, session.Connection, stringWriter);
}
}
public void CanConfirmDatabaseMatchesMappings()
{
var allClassMetadata = NHibernateSession.GetDefaultSessionFactory().GetAllClassMetadata();
foreach (var entry in allClassMetadata)
{
NHibernateSession.Current.CreateCriteria(entry.Value.GetMappedClass(EntityMode.Poco))
.SetMaxResults(0).List();
}
}