Я только что установил FluentNHibernate и пытаюсь автоматизировать только один класс.Автоматическое отображение является в значительной степени требованием, потому что я имею дело примерно с 80-90 классами, многие из которых содержат 20, 30, даже 40 свойств в каждом классе.Это существующий домен с существующей базой данных, поэтому перепроектирование не вариант.Попытка наивно автоматизировать один класс, используя почти тот же код из примеров документов
private static ISessionFactory CreateSessionFactory()
{
var cs = System.Configuration.ConfigurationManager.
ConnectionStrings["MyConnectString"].ConnectionString;
return Fluently.Configure()
.Database(
MsSqlConfiguration.MsSql2012.ConnectionString(cs)
)
.Mappings(x => x.AutoMappings.Add(CreateAutoMappings()))
.BuildSessionFactory();
}
Где метод CreateAutomappings ():
private static AutoPersistenceModel CreateAutoMappings()
{
return AutoMap.AssemblyOf<MySubClass>(new
MySubClassAutomappingConfiguration())
.Conventions.Add<CascadeConvention>() ;
}
MySubClassAutomappingConfiguration просто выбирает только один классдля сопоставления и является производным от DefaultAutomappingConfiguration.
Итак, в конце я получаю ошибку сервера:
Tried to add property 'ServerID' when already added.
Description: An unhandled exception occurred during the execution of the
current web request. Please review the stack trace for more information about
the error and where it originated in the code.
Exception Details: System.InvalidOperationException: Tried to add property
'ServerID' when already added.
ServerID - это свойство, производное от базового класса MySubClass (давайте назовем его MySubClassBaseClass) и переопределимв MySubClass.Поэтому некоторые исправления для этого вызова ошибки для карт классов, производных от карты базовых классов, например, в Используйте производный класс в свободном nHibernate .
Теперь мой вопрос: могу ли я свободно отобразить базовый класс и подклассы автоматически?Предполагая, что это даже исправляет мою ошибку, хотя я думаю, что было бы хорошо сделать в любом случае.