public void CheckPossibilityToRemoveManufacturer(Producer producer, Manufacturer manufacturer, User user) { // права CheckPermissionToPerformOperation(producer, user, Permission.Producer_Edit); if (producer.Organization.HasManufacturer && producer.Organization.Manufacturer == manufacturer) { throw new Exception("Связь не может быть разорвана, так как производитель является данной фабрикой-изготовителем."); } var productionOrders = producerRepository.SubQuery <ProductionOrder>().Where(x => x.Producer.Id == producer.Id).Select(x => x.Id); var productionOrderBatchRowsCount = producerRepository.Query <ProductionOrderBatchRow>() .Where(x => x.Manufacturer.Id == manufacturer.Id) .Restriction <ProductionOrderBatch>(x => x.Batch) .Restriction <ProductionOrder>(x => x.ProductionOrder) .PropertyIn(x => x.Id, productionOrders).CountDistinct(); if (productionOrderBatchRowsCount > 0) { throw new Exception("Связь не может быть разорвана, так как фабрика-изготовитель участвует в заказах этого производителя."); } }