конструкторе базовой сущности читаем из конфигурации строку подключения к БД? И дальше наследники используют её в своих конструкторах, чтобы инициализировать экземпляры классов для доступа к БД? Не, тоже не канает. Просто строки подключения мало. Надо какой-то контекст, чтобы можно было транзакционно работать с несколькими сущностями. Типа
                  
                  
                  var tran = _context.BeginTran();
                  
                  
                  await user.AddRole(role1);
                  
                  
                  await company.AddUser(user)
                  
                  
                  tran.Commit();
                  
                  
                  Ну допустим. И ссылка на контекст - в базовом классе.
                  
                  
                  
                  
                  
                  2. Множественное наследование до 8 шарпа пока ещё не очень. Так что, только интерфейсы.
                  
                  
                  await company.AddUsers(user1, user2)
                  
                  
                  await company.AddDepartments(department1)
                  
                  
                  await company.AddRole(role1)
                  
                  
                  при этом
                  
                  
                  await department1.AddUsers(user1)
                  
                  
                  await role1.AddUsers(user2)
                  
                  
                  
                  
                  
                  У них общий предок? Вряд ли. Скорее часть интерфейсов, которые они реализуют, пересекаются. Просто потому что реализация AddUsers у них разная.
                  
                  
                
1. Active Record, а мы уже разобрались что это плохо, нарушает все возможные принципы, но это невероятно легко использовать поначалу, по наивности 2. эти методы AddUsers возникают не на пустом месте, и понятие DRY здесь не применимо, это бизнес-логика твоего приложения, логика добавления пользователей вообще говоря может быть везде различной
Обсуждают сегодня