Мы используем Fluent NHibernate для модели объектов данных в компании, в которой я работаю.Пару дней назад мы столкнулись с проблемой, что Fluent NHibernate генерирует дополнительный столбец, который не существует ни в модели, ни в отображении.Вот ситуация:
Моя модель: FirstClass.cs
public class FirstClass
{
public virtual int Id { get; private set; }
public virtual SecondClass MyReference { get; set; }
public virtual DateTime DecisionDate { get; set; }
}
Мое сопоставление:
public class FirstClassMap : ClassMap<FirstClass>
{
public FirstClassMap()
{
Id(x => x.Id);
Map(x => x.DecisionDate);
References(x => x.MyReference);
}
}
После построения схемы со следующим кодом,
Instance._sessionFactory = Fluently.Configure()
.Database(MySQLConfiguration.Standard
.ConnectionString(connectionString)
.ShowSql())
.ExposeConfiguration(c =>
{
c.Properties.Add("current_session_context_class", ConfigurationHelper.getSetting("SessionContext"));
})
.ExposeConfiguration(BuildSchema)
.Mappings( m => m.FluentMappings.AddFromAssemblyOf<Community>())
.BuildSessionFactory();
Создается дополнительный столбец с именем "SecondClass_id" с индексом и внешним ключом для таблицы SecondClass со столбцом Id.Вот созданная таблица:
CREATE TABLE `FirstClass` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`DecisionDate` datetime DEFAULT NULL,
`MyReference_id` int(11) DEFAULT NULL,
`SecondClass_id` int(11) DEFAULT NULL,
PRIMARY KEY (`Id`),
KEY `MyReference_id` (`MyReference_id`),
KEY `SecondClass_id` (`SecondClass_id`),
CONSTRAINT `FK4AFFB59B2540756F` FOREIGN KEY (`MyReference_id`) REFERENCES `SecondClass` (`Id`),
CONSTRAINT `FK4AFFB59B51EFB484` FOREIGN KEY (`SecondClass_id`) REFERENCES `SecondClass` (`Id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Я обнаружил, что, если я переименую «MyReference» в «SecondClass» (то же имя, что и у типа класса), дополнительный столбец не будет создан.Но я хочу использовать мое свойство с указанным именем, а не с именем класса.Почему этот дополнительный столбец создается?Как мне это исправить?Я не хочу, чтобы вокруг висели дополнительные столбцы с внешними ключами.