Я не тестировал базу данных, а просто тестировал сгенерированное отображение. Так, например, у меня есть соглашение, которое гласит, что все внешние ключи пишутся как ID, и я проверяю это как (я использую xunit, а не mstest, но, надеюсь, вы можете получить концепцию ...):
[Fact]
public void AddDefaultConventions_ShouldNameMappingToForeinKeyCorrectly()
{
var configuration = Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2008)
.Mappings(m =>
{
m.FluentMappings.Conventions.Add(new CustomForeignKeyConvention());
m.FluentMappings.Add<TestClassMap>();
m.FluentMappings.Add<TestClass2Map>();
})
.BuildConfiguration();
var typeMapping = configuration.GetClassMapping(typeof(TestClass2));
var property = typeMapping.GetProperty("Parent");
Assert.Equal("ParentID", property.ColumnIterator.First().Text);
}
private class TestClass
{
public virtual int ID { get; set; }
}
private class TestClass2
{
public virtual int ID { get; set; }
public virtual TestClass Parent { get; set; }
}
private class TestClassMap : ClassMap<TestClass>
{
public TestClassMap()
{
Id(x => x.ID);
}
}
private class TestClass2Map : ClassMap<TestClass2>
{
public TestClass2Map()
{
Id(x => x.ID);
References(x => x.Parent);
}
}
Btw. это не будет слишком сложно для тестирования на БД, просто попробуйте выбрать что-то из TestClass2 и убедитесь, что нет исключений ... но я думаю, что способ, который я показал, проще, и я верю, что когда FluentNhibernate может генерировать правильный NHibernate сопоставляя, NHibernate может генерировать правильные запросы для меня.