powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / ASP.NET CORE linq и репозиторий
13 сообщений из 13, страница 1 из 1
ASP.NET CORE linq и репозиторий
    #39928454
jeanssp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте Все!
Делаю приложение asp.net core mvc 3..
Создал класс репозитория , который через контроллер передается в представление. В репозитории я создаю объект , который включает в себя связанные таблицы.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
namespace JeansFull.Models
{
    public class EFPurchGoodRepository : IPurchGoodsRepository
    {
        private Point4Context db;
        public EFPurchGoodRepository(Point4Context dbc)
        {
         db = dbc;
        }
        public IQueryable<PurchGoods> PurchGoods => db.PurchGoods
            .Include(c => c.GoodsStocks)
            .Where(c => c.GoodsStocks.Stock > 0)
            .Include(c => c.Nomencl)
             .ThenInclude(c => c.Articul)
              .ThenInclude(c => c.Model)
            .Include(c => c.Nomencl)
             .ThenInclude(c => c.Articul)
              .ThenInclude(c => c.Type)
            .Include(c => c.Nomencl)
             .ThenInclude(c => c.Articul)
              .ThenInclude(c => c.Manufacturer)
            .Include(c => c.Nomencl)
             .ThenInclude(c => c.Articul)
              .ThenInclude(c => c.ArticulImages)
            ;
    }


Далее в представлении мне приходится для вывода значений идти по веткам таблиц .

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
@model IEnumerable<PurchGoods>

@{
    foreach (var g in Model)
    {
    <div>
        <h2>ProductID: @g.GoodId</h2>
        <p><h2>NomenclID: @g.NomenclId</h2></p>
        <p><h2>Stock: @g.Nomencl.Stock</h2></p>
        <p><h2>Articul: @g.Nomencl.Articul.Articul</h2></p>
        <p><h2>Articul: @g.Nomencl.Articul.Model.ModelName</h2></p>
        <p><h2>Articul: @g.Nomencl.Articul.Type.Type</h2></p>
        <p><h2>Articul: @g.Nomencl.Articul.Manufacturer.ManufName</h2></p>
        <p><h2>Articul: @g.Nomencl.Articul.ArticulImages</h2></p>
    </div>
    }
}


Все конечно работает, но это же не правильно? Нужно же что бы была только одна ветка?
например
@g.Articul
@g.Stock
@g.Type
ну и так далее.....
Как сформировать правильный запрос в репозитории? Его же надо делать именно там?
...
Рейтинг: 0 / 0
ASP.NET CORE linq и репозиторий
    #39928480
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
открой для себя вьюмодель и не тащи на вьюшку модель бд
...
п.с. репо ты для чего отделил а то люди просто суют не понимая зачем
п.с. п.с если ты выкатил IQueryable то зачем ты в репо делаешь Include это можно сделать в любом месте по нужде
...
Рейтинг: 0 / 0
ASP.NET CORE linq и репозиторий
    #39928510
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRu
п.с. п.с если ты выкатил IQueryable то зачем ты в репо делаешь Include это можно сделать в любом месте по нужде

Но лучше так не делать. А нужду справлять в специально отведенных для этого местах. :)
...
Рейтинг: 0 / 0
ASP.NET CORE linq и репозиторий
    #39928622
jeanssp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRu, Я по книжке Фримана пытаюсь сделать приложение Там ViewModel отсутствует(может я не нашел). Это паттерн?
Там у него и IQueryable и Include . База данных у меня уже есть рабочая. Может примерчик какой подскажете?
...
Рейтинг: 0 / 0
ASP.NET CORE linq и репозиторий
    #39928624
jeanssp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat,
В смысле? repo вообще не нужен? Пользоваться viewModel? Объясните поподробнее пожалуйста.
...
Рейтинг: 0 / 0
ASP.NET CORE linq и репозиторий
    #39928627
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jeanssp
fkthat,
В смысле? repo вообще не нужен? Пользоваться viewModel? Объясните поподробнее пожалуйста.

Выставлять наружу IQueryable не нужен. "Leak of abstraction", говорят, типа.
...
Рейтинг: 0 / 0
ASP.NET CORE linq и репозиторий
    #39928680
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
jeanssp
fkthat,
В смысле? repo вообще не нужен? Пользоваться viewModel? Объясните поподробнее пожалуйста.

Выставлять наружу IQueryable не нужен. "Leak of abstraction", говорят, типа.

можно осторожно, к примеру на только чтение, но кодом не ограничить

есть противники как и репо так и не делать раз орм уже по сути и репо и юнит оф ворк. почему репо лепять чтоб типо сделать абстракцию над источником данных авось поменяется в будущем

вываливать IQueryable удобно делать запрос
альтернатива делать жирный репо
его альтернатива Specification + Repository
...
Рейтинг: 0 / 0
ASP.NET CORE linq и репозиторий
    #39928681
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jeanssp
handmadeFromRu, Я по книжке Фримана пытаюсь сделать приложение Там ViewModel отсутствует(может я не нашел). Это паттерн?
Там у него и IQueryable и Include . База данных у меня уже есть рабочая. Может примерчик какой подскажете?

у тебя тащить много сущностей из репо они все тебе нужны? вьюмодель эт переделать только то что надо...если по твоей методике вернуть json я почти уверен что ты огребешь зацикливание
...
Рейтинг: 0 / 0
ASP.NET CORE linq и репозиторий
    #39928705
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRu
вываливать IQueryable удобно делать запрос

И удобно выстрелить себе в ногу, в любой момент случайно написав запрос, не поддерживаемый нижележащим линкью-провайдером. (Собственно, в этом та самая "протечка" и есть).
...
Рейтинг: 0 / 0
ASP.NET CORE linq и репозиторий
    #39928778
jeanssp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRu, Не понятно. Пример бы
...
Рейтинг: 0 / 0
ASP.NET CORE linq и репозиторий
    #39928894
jeanssp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скажите, пожалуйста, хотя быв каком классе должна происходить инициализация объекта контекста? У меня это происходило в репо. А теперь в классе viewModel?
...
Рейтинг: 0 / 0
ASP.NET CORE linq и репозиторий
    #39929147
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jeanssp
Скажите, пожалуйста, хотя быв каком классе должна происходить инициализация объекта контекста?

Ничего самому инициализировать не надо. Инжектишь просто его в конструктор репо, остальное DI делает за тебя.

jeanssp
У меня это происходило в репо. А теперь в классе viewModel?

Упаси боже. Только не там. ВьюМодель это тупой ДТО единственный консерн которого это хранить в себе данные для отображения на Вью. Он не должен содержать никакой логики, которая зависит от БД или вообще от других компонентов. Максимум - это какая-нибудь примитивная логика связанная только с представлнием данных (форматирование, например).
...
Рейтинг: 0 / 0
ASP.NET CORE linq и репозиторий
    #39929173
jeanssp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
jeanssp
Скажите, пожалуйста, хотя быв каком классе должна происходить инициализация объекта контекста?

Ничего самому инициализировать не надо. Инжектишь просто его в конструктор репо, остальное DI делает за тебя.

.
То есть репозиторий нужен все таки?
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / ASP.NET CORE linq и репозиторий
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]