В настоящее время я не знаю, как определить совокупный корень.
У меня есть следующие классы.
- Garage
- Organisation
- RuleSet
- Rule
- OrganisationRule
- GarageRule
A Garage
может иметь много Organisations
.
A RuleSet
- это объект, на который ссылаются Rules
.
Существуют Rules
, которые непосредственно связаны с RuleSet
.
Тогда есть OrganisationRules
, которые связаны с RuleSet
и Organisation
.
Наконец, есть GarageRules
, которые связаны с RuleSet
и Garage
.
ЦелымКонцепция набора правил и его правил заключается в том, что пользователь может добавлять правила в набор правил на уровне набора правил.Затем эти правила могут быть перезаписаны правилами, определенными на уровне организации.Опять же, для гаражей можно добавить более конкретные правила.
Итак, позже клиент хочет получить правила для гаража, он сначала проверит правила, которые непосредственно связаны с гаражом, а затем проверитдля правил на уровне организации, а затем на уровне набора правил.
Моя задача сейчас состоит в том, чтобы идентифицировать совокупные корни.Кроме того, если, например, RuleSet является совокупным корнем всех правил, я не знаю, как выполнять эффективные запросы, чтобы получить правило для конкретного гаража (их около 60000 гаражей).
Так, например:
public class RuleSet
{
public ICollection<Rule> MetaRules { get; set; }
public ICollection<OrganisationRule> OrganisationRules { get; set; }
public ICollection<GarageRule> GarageRules { get; set; }
}
Или я должен сделать каждый объект правила своим собственным агрегированным корнем?Так что тогда я могу делать запросы, такие как garageRuleRepository.GetRulesByRuleSetAndGarage(RuleSet ruleSet, Garage garage)
.В противном случае я получу очень большие коллекции в моем совокупном корне, которые я не смогу правильно запросить.