大家早,
我有许多实体,Car 和 Van,每个实体都有一个 Driver 列表。例如,
public class Car : Entity
{
public virtual string Name { get; set; }
public virtual IList<Driver> Drivers { get; set; }
}
如果将相同的 Driver 添加到 Car 和 Van。当我从汽车上删除司机并且司机存在于货车上时,我得到一个 SQL 引用异常。
在数据库中,我有一个用于 Cars、Vans 和 Drivers 的表,然后是两个连接表Cars_Drivers
和Vans_Drivers
.
我可以在映射中做些什么来使其他对象相互了解,因此 delete 不会引发引用异常。
编辑- 这是我尝试从汽车中删除驱动程序时遇到的 SQL 异常。
NHibernate.Exceptions.GenericADOException: could not delete: [Platform.Core.Driver#2] [SQL: DELETE FROM Drivers WHERE Id = ?] ---> System.Data.SqlClient.SqlException: The DELETE statement conflicted with the REFERENCE constraint "FKCBD4DA8384042473". The conflict occurred in database "Platform", table "dbo.Vans_Drivers", column 'DriverFK'. The statement has been terminated.
编辑 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();
}
}
汽车
- ID
- 姓名
Cars_Drivers
- ID
- CarFK
- 司机FK
驱动程序
- ID
- 更多科尔
货车也是如此。
@Handprint - 用于从汽车中移除司机的代码。
Driver driver = DriverService.Get(driverId);
Car car = CarService.Get(carId);
car.Drivers.Remove(driver);
CarService.SaveOrUpdate(car);
提前致谢。
富有的