나는이 모델이있다!한 제로 많은 폭포를 삭제
원하는 사항 : - 모든 회사는 선택 로고 또는 카탈로그를 보유하고 있으며 모든 광고에는 선택적인 그림이 있습니다. - FileUpload 레코드를 직접 삭제할 수 있습니다. - 캐스케이드 삭제
어떻게해야합니까?!
나는이 모델이있다!한 제로 많은 폭포를 삭제
원하는 사항 : - 모든 회사는 선택 로고 또는 카탈로그를 보유하고 있으며 모든 광고에는 선택적인 그림이 있습니다. - FileUpload 레코드를 직접 삭제할 수 있습니다. - 캐스케이드 삭제
어떻게해야합니까?!
Company
또는 Ads
이 삭제 될 때 FileUpload
이 계단식 삭제로 삭제되기를 원합니 까?
이것은 FileUpload
이 세 관계 모두에서 주체이고 Company
및 Ads
이 종속되어 있기 때문에 의미가 없습니다. 종속이 삭제 될 때 주체를 계단식으로 삭제할 수 없습니다. 어쨌든 일대 다 관계에서는 FileUpload
이 많은 다른 회사 또는 광고에서 사용될 수 있기 때문에 대부분의 경우 실패합니다. 그 중 하나를 삭제하고 FileUpload
이 계단식으로 삭제되면 다른 회사 및 광고의 외래 키 제약 조건을 위반하게됩니다.
모델에서 FileUpload
이 삭제 될 때 Company
및 Ads
이 삭제되도록 계단식 삭제 만 할 수 있습니다 (이상한 소리). 심지어 두 개의 관계로 복수 계단식 삭제 경로를 FileUpload
에서 Company
으로 구성했기 때문에 Fluent 매핑에서이 작업을 수행 할 수 없습니다. SQL Server는 이러한 관계를 허용하지 않습니다. 적어도 하나의 계단식 삭제를 제거해야합니다. Company
및 Ads
A는 FileUpload
가 다른 회사 또는 광고에서 사용하지 않는 경우 체크 한 후 삭제 될 때 모델에서
은 수동으로 FileUpload
기록을 삭제해야합니다.
FileUpload
이 둘 이상의 회사 또는 광고에서 사용될 수없고 회사가 광고를 통해 사용하지 않았으며 광고를 통해 사용 된 적이 없다는 것을 알고 계시면 간단합니다. 회사) 삭제 :
using (var context = new TestContext())
{
var company = context.Companies
.Include(c => c.Logo)
.Include(c => c.Catalog)
.Single(c => c.CompanyId == companyIdToDelete);
if (company.Logo != null)
context.FileUploads.Remove(company.Logo);
if (company.Catalog != null && company.Logo != company.Catalog)
context.FileUploads.Remove(company.Catalog);
context.Companies.Remove(company);
}
무엇을 의미하는 설명을 ... 난 내 프로젝트에 이런 짓을하지만 ... 내가 그것을 가지고 당신의 좋은에 대한 고맙습니다 :) 설명) –
당신이 많은 고맙습니다 _not의 working_ – Eranga