0

皆さんおはよう、

私にはCarとVanという多くのエンティティがあり、それぞれにドライバーのリストがあります。例えば、

public class Car : Entity
{
    public virtual string Name { get; set; }
    public virtual IList<Driver> Drivers { get; set; }
}

同じドライバーを車とバンに追加する場合。車からドライバーを削除するようになり、ドライバーがバンに存在する場合、SQL参照例外が発生します。

データベースには、Cars、Vans、およびDriversのテーブルがあり、次に2つの結合テーブルCars_DriversとがありVans_Driversます。

他のオブジェクトがお互いを認識できるようにするためにマッピングでできることはありますか?削除しても参照例外はスローされません。

編集-これは、車からドライバーを削除しようとしたときに発生する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
    • DriverFK
  • 運転手

    • Id
    • その他の列

同じことがバンにも当てはまります。

@Handprint-車からドライバーを削除するために使用されるコード。

Driver driver = DriverService.Get(driverId); 
Car car = CarService.Get(carId); 

car.Drivers.Remove(driver); 

CarService.SaveOrUpdate(car);

前もって感謝します。

リッチ

4

0 に答える 0