Fluent nhibernate 无法删除具有多个引用的实体

Fluent nhibernate 无法删除具有多个引用的实体,fluent-nhibernate,fluent-nhibernate-mapping,Fluent Nhibernate,Fluent Nhibernate Mapping,早上好 我有很多实体,汽车和面包车,每个实体都有一份司机名单。比如说, public class Car : Entity { public virtual string Name { get; set; } public virtual IList<Driver> Drivers { get; set; } } 编辑2-映射和表 public class CarMappingOverrides : IAutoMappingOverride<Car> {

早上好

我有很多实体,汽车和面包车,每个实体都有一份司机名单。比如说,

public class Car : Entity
{
    public virtual string Name { get; set; }
    public virtual IList<Driver> Drivers { get; set; }
}
编辑2-映射和表

public class CarMappingOverrides : IAutoMappingOverride<Car>
{
    public void Override(AutoMapping<Car> mapping)
    {
        mapping.HasManyToMany(x => x.Drivers).Cascade.All();
    }
}

public class VanMappingOverrides : IAutoMappingOverride<Van>
{
    public void Override(AutoMapping<Van> mapping)
    {
        mapping.HasManyToMany(x => x.Drivers).Cascade.All();
    }
}
提前谢谢


Rich

从您的描述中,听起来您的系统试图删除驱动程序实体(从驱动程序表中),而不是从
vanu drivers
列表中删除引用。关于你的错误的更多细节可能会在这里有所帮助。@GermannArlington是的,你是对的。我希望删除来自
汽车驾驶员的参考,但不删除驾驶员或其他参考。我将更新我的问题以包含SQL错误消息。您还必须发布表关系映射,看起来您将
汽车
/
货车
表直接关联到
司机
表,而不是
货车司机
和/或
货车司机
@Richard Tasker您使用什么代码从车中删除司机?正如@GermannArlington所说,您需要发布映射。您的映射绝对不是按照您想要的实体关系建模的。
public class CarMappingOverrides : IAutoMappingOverride<Car>
{
    public void Override(AutoMapping<Car> mapping)
    {
        mapping.HasManyToMany(x => x.Drivers).Cascade.All();
    }
}

public class VanMappingOverrides : IAutoMappingOverride<Van>
{
    public void Override(AutoMapping<Van> mapping)
    {
        mapping.HasManyToMany(x => x.Drivers).Cascade.All();
    }
}
Driver driver = DriverService.Get(driverId); 
Car car = CarService.Get(carId); 

car.Drivers.Remove(driver); 

CarService.SaveOrUpdate(car);