2012-06-06 2 views
0

나는 2 명의 부모의 아이 인 종류가있다. 내가 부모 중 하나를 삭제하면 , 나는 아이들이 삭제 될 것으로 예상,하지만 난 직원을 제거하면 다른 부모는 오류 Deleted object would be resaved by cascade유창한 nhibernate 2 명의 수집에있는 상호적인 아이

class Company 
{ 
    // automap.HasMany(x=>x.Cars).Cascade.AllDeleteOrphan(); 
    IList<Car> Cars { get; set; } 

    // automap.HasMany(x=>x.Employees).Cascade.AllDeleteOrphan(); 
    IList<Employee> Employees { get; set; } 
} 

class Employee 
{ 
    // automap.references(x=>x.job); 
    Company job { get; set; } 

    // automap.hasMany(x=>x.OwnedCars).Cascade.AllDeleteOrphan(); 
    IList<Cars> OwnedCars { get; set; } 
} 

class Car 
{ 
    // automap.references(x=>x.company) 
    Company company { get; set; } 

    // automap.references(x => x.Employee) 
    Employee Driver {get; set; } // might be null 
} 

와 세션에서 그들을 유지 - 나는 그의 차를 제거하려면 회사에서 너무;

var Company = Sesion..Get(1); 
Company.Employees.removeAt(1); 
Session.Update(Company); 

자동차의 목록을보다는 제거을 통과 할 수있는 더 좋은 방법은 차 내가 제거있어 직원 소유 여부 프라하, 단 있는가 - 및 직원을 제거하기 전에 차를 너무 제거?

답변

1

당신은 (직원이 삭제 될 것이므로 어쩌면 불필요 할 수도 있음) 직원과 회사로부터 자동차와의 연관성을 제거해야합니다. 삭제 한 내용은 다음과 같습니다.

var company = session.Get(1); 
var employee = company.Employees[1]; 
foreach(var car in employee.OwnedCars) 
{ 
    car.company.Cars.Remove(car); 
} 
company.Employees.Remove(employee); 
session.Update(company);