1
算目前我使用此代碼:通用的方法在實體框架
opportunity.Contacts.Where(x => x.IsDeleted = false).IsNullOrEmpty()
在每個實體檢查,如果在實體(例如Opportunity
)存在任何集合。
public bool Delete(int companyId, int opportunityId)
{
var opportunity = _opportunityRepository.FindOne(companyId: companyId, opportunityId: opportunityId).FirstOrDefault();
if (!opportunity.Contacts.Where(x => x.IsDeleted = false).IsNullOrEmpty())
{
throw new UserFriendlyException(ErrorMessages.UserFriendly.UnableToDeleteEntityHasRelatedData);
}
opportunity.IsDeleted = true;
_opportunityRepository.Edit(opportunity);
CurrentUnitOfWork.Commit();
return true;
}
這種方法是重複的,耗時數百個地方。
我們如何使它成爲一個通用的功能,可以檢查實體類型和使用反射或另一種方式來檢查其所有特性,這實現ICollection<T>
和執行查詢,以檢查他們的計數?
[ForeignKey("DepartmentId")]
public virtual ICollection<DepartmentLocation> DepartmentLocations { get; set; }
[ForeignKey("DepartmentId")]
public virtual ICollection<EmployeePosition> EmployeePositions { get; set; }
爲什麼不啓用級聯刪除的關係? – haim770
或者如果不需要級聯,則禁用級聯...刪除級聯的默認級別取決於所需的關係或可選... – grek40