Как я могу запросить сущность из коллекции в совокупности корневых коллекций? - PullRequest
0 голосов
/ 05 января 2019

В настоящее время я разрабатываю API, но я не уверен, является ли этот совокупный корень наилучшей практикой с точки зрения полезности.

Context

Это мои занятия: Abstract visual of my entities.

(!) Меня волнует только история рыб. У меня нет намерения запрашивать / запрашивать сущность Salmon или сущность Carp по отдельности, и мне не нужно делать это на GroupRods или Rod.

С точки зрения контекста, я знаю о разных рыбах. Они отличаются по свойствам (не по логике) друг от друга. Причина этого интерфейса в том, чтобы позволить другим разработчикам добавлять другую логику при необходимости.

Цель

Я хотел бы иметь возможность добавлять или удалять контроллеры для другой рыбы, не касаясь других контроллеров.

Я хотел бы добиться этого:

//GET
`api/fishhistory/rods/{rodid}/salmon`
`api/fishhistory/rods/{rodid}/carp`

Использование шаблона репозитория кажется законным, поскольку существует значительная вероятность того, что ORM (EF6) со временем изменится.

Кроме того, в настоящее время я работаю с двумя видами рыб, но эта сумма может вырасти, скажем, до 10-20, может быть, со временем больше.

Вопрос

Исходя из вышеизложенного и контекста, я не предпочитаю создавать репозитории для каждой отдельной рыбы и т. Д., Потому что это может повредить ремонтопригодности, особенно если количество различных видов рыб возрастет до 10-20 или даже больше Больше. Я думал о создании двух хранилищ: (1) со всеми рыбами и (2) со всеми стержнями. Но я не уверен, что у меня возникнут проблемы с транзакциями.

Моя предпочтительная ситуация - создать один репозиторий, который может использоваться любым рыбным контроллером.

public class SalmonController : ApiController 
{
    private IFishHistoryRepository _fishHistoryRepo;

    public SalmonController(IFishHistoryRepository repo)
    {
        _fishHistoryRepo = repo;
    }

    // GET's
    [HttpGet]
    [Route("api/fishhistory/rods/{rodnumber}/salmons")]
    public IHttpActionResult GetAllSalmons(int rodnumber)
    {
         // at this point, is there a way to achieve this action without querying the carps?
    }
    // Etc here
}

То есть, возможно ли это как-то:

// Used in SalmonController
public class FishHistory
{
    GroupRods GroupRods;
    ICollection<Salmon> Fishes;
}

// Used in CarpController
public class FishHistory
{
    GroupRods GroupRods;
    ICollection<Carp> Fishes;
}

Заранее спасибо.

...