Я очень новичок в RavenDB и MVC3, в частности, использование (не концепция) IoC. Так что просто предупреждаю, что это будет звучать как вопрос для начинающих.
В итоге:
У меня есть модель домена, скажем, это
public class Goose
В этом классе у меня может быть более сложный объект как свойство
public Beak beak { get; set; }
В RavenDB нам справедливо рекомендуется [JsonIgnore] иметь это свойство или не иметь его вообще, а вместо этого иметь ссылочный идентификатор, такой как
public String beakId { get; set; }
Где-то по пути в моем приложении MVC3 я захочу просмотреть Goose и, возможно, захочу показать пользователю что-то о Goose и его клюве (это должен быть Билл?). Так что да, мне нужна модель представления, верно?
public class GooseModel
{
public String BeakColour { get; set; }
public String BeakLength { get; set; }
...etc
}
Правильно, если предположить, что у меня есть несколько GooseRepository и несколько BeakRepository, вот простой вопрос ...
Я в классе GooseController и загружаю Goose для просмотра. В какой момент я использую BeakRepository, и кто должен знать об этом? GooseController знает о GooseRepository и загружает Goose по идентификатору. На этом этапе у нас может быть какое-то свойство внутри класса Goose, которое представляет весь клюв, но я действительно не хочу вставлять BeakRepository в GooseRepository, не так ли? Итак, возможно, когда я создаю GooseModel из Goose, который я обнаружил, я могу получить свойства GooseModel для BeakColour и BeakLength, как? Что ж, мне нравится AutoMapper, так что я думаю, что моя карта For GooseModel от Goose использует BeakRepository для поиска Beak, а затем извлекает два свойства Beak для заполнения полей GooseModel ... это тоже кажется неправильным ... так что же осталось? GooseController ... должен ли контроллер Goose знать о BeakRespository, а затем найти и установить BeakColour и BeakLength !? это, конечно, тоже кажется совершенно неправильным ..
Так, где это сделано? Контроллер, объект домена, маппер или еще где-то? Возможно, у меня должен быть частичный вид Type Beak, который используется в представлении Goose? ..