Репозиторий без интерфейса и абстракции = аберрация? - PullRequest
4 голосов
/ 26 июля 2011

Мне нужны отзывы о разработке такого хранилища, это поможет мне серьезно отдохнуть ночью ...
У меня нет намерения писать тесты для веб-форм, слишком много накладных расходов.
У меня нетнамерение изменить ORM или базу данных завтра, в следующем месяце или в следующем году, и мне нужно место, чтобы централизовать логику запросов и избежать дублирования кода .Правильно? ...

public class StuffRepository // no contract, I simply instanciate StuffRepository
{
    // Scope is Per-Request, DI, no abstraction...
    protected StuffDb DbContext = ObjectFactory.GetInstance<StuffDb>();

    // Returns a Stuff, an Entity (EF), no abstraction
    public Stuff Get(Guid id)
    {
        return DbContext.Stuff.FirstOrDefault(s => s.Id == id);
    }
}

Я работал с полностью абстрагированными репозиториями, архитектурой MVP поверх веб-формы для тестирования отдельных страниц и абстрагированных объектов (DTO и объектов домена / модели).Это просто никогда не кончается, этого никогда не бывает достаточно, никогда не бывает идеальным.

Я нарушаю все правила, принципы и рождаю аберрацию, называя это хранилищем?StuffDAL, это вдруг имело бы смысл?

Спасибо

Ответы [ 2 ]

3 голосов
/ 26 июля 2011

Честно говоря, я чувствую то же самое в отношении репозиториев, и, наконец, прочитав тонну об этом в прошлом месяце, у меня действительно сложилось впечатление, что я все время неправильно делал репозитории.То, что я считал репозиторием, на самом деле было просто DAO или DAL, абстракцией, чтобы было проще сказать: «Постоянство, верни мне мой объект» или «Постоянство, держи этот объект, пока я не захочу его позже».

И вы знаете, что, мне все равно, как это называется, если оно правильно абстрагирует то, что мне нужно, легко проверить, выполнить работу, легко изменить.

Итак, это хранилище, как это было предусмотрено Эриком Эвансом с хранилищем объектов в памяти?Нет, не совсем, но, эй, я вас за это не сдам.

2 голосов
/ 26 июля 2011

Для меня репозиторий здесь, чтобы дать вам глобальное постоянство над вашими данными, включая кеширование, чтобы, например, не получить еще раз вашу базу данных.Это также что-то выделенное функция, кроме CRUD.Принимая во внимание, что DAL предоставляет вам доступ к базе данных, которая является единственной ответственной за обеспечение постоянства данных при различных вызовах из вашего приложения и обычно ограничивается вызовом CRUD для базы данных

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

, но посмотрите здесь , и вы увидите, что разница между обоими все относительно.

Как не будет использовать интерфейс, я не рекомендую его.Так полезно добавить несколько строк, через некоторое время ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...