Я только что перешел с nHib 2.1.2 с беглым nHib 1.2 до nHib 3.1 с последним беглым nHib (также 1.2).
теперь, неожиданно, я получаю исключение для сопоставления для моей сущности Employee.
Сотрудник содержит список управляемых сотрудников, а также обратный список руководителей.
вот так:
public virtual IEnumerable<Employee> ManagedEmployees { get; private set; }
public virtual IEnumerable<Employee> Managers { get; private set; }
Я использую Automapping, и это переопределение отображения, которое ранее работало отлично:
mapping.HasManyToMany(x => x.ManagedEmployees).Cascade.SaveUpdate()
.Table("ManagersToEmployees").ParentKeyColumn("Manager_id").ChildKeyColumn("Employee_id")
.AsSet()
.Not.LazyLoad()
.Fetch.Subselect()
;
mapping.HasManyToMany(x => x.Managers).Cascade.None()
.Table("ManagersToEmployees").ParentKeyColumn("Employee_id").ChildKeyColumn("Manager_id")
.Inverse()
.AsSet()
;
теперь выдает ошибку:
FluentNHibernate.Visitors.ValidationException: The relationship Employee.Managers to Employee.Managers has Inverse specified on both sides. Remove Inverse from one side of the relationship..
кто-нибудь понял?
Редактировать
это подтвержденная ошибка в FNH. на основе этого обходного пути Я изменил свою конфигурацию автоматического преобразования на:
.Mappings(m =>
{
var autoPersistenceModel = AutoMap.AssemblyOf<Domain.Employee>(cfg) //automapping the domain entities
.UseOverridesFromAssemblyOf<MappingOverrides.DepartmentMappingOverride>();
autoPersistenceModel.ValidationEnabled = false;
m.AutoMappings.Add(
autoPersistenceModel
);
}
);