• Как сделать cherry pick?

    saboteur_kiev
    @saboteur_kiev Куратор тега Git
    software engineer
    Мне нужно изменения из 2(Б) ветки закинуть в ветку 1(А). Что я делаю:

    Черри пик это про коммит, а не про ветку

    Возможно тебе нужен rebase или merge, а не черри пик?
    Ответ написан
    3 комментария
  • Как перенастроить 192.168.170.198 на localhost?

    foxmuldercp
    @foxmuldercp
    Системный администратор, программист, фотограф
    localhost -> 127.0.0.1
    192.168 - серая сеть более внешняя.
    заходите по localhost, никто не мешает.
    доступны - потому что слушают адрес '*'

    man "lsof", ну так называемые параметры bind, listen для сервисов
    Ответ написан
    2 комментария
  • Как сделать БД для переводчика?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    id
    word
    transcription
    translate
    userId -> внешний ключ

    id
    firstName
    lastName
    Ответ написан
    6 комментариев
  • Как вывести несколько сущностей в одном запросе?

    sarapinit
    @sarapinit Куратор тега C#
    Точу водой камень
    Получить коллекцию параметров в метод контроллера можно так:
    public ActionResult GetSomething([FromQuery] string[] somethingNames)
    {
        ...
    }


    Если вы об этом.
    Ответ написан
    Комментировать
  • Как инстанцировать IOptions?

    IOptions можно создать при помощи
    IOptions<A> options = Options.Create(new A());
    Options.Create
    Ответ написан
    Комментировать
  • Как обновить БД в Docker?

    Вопрос: Как мне можно тогда "насильно" апдейтнуть бд? Знаю, что есть dotnet cli команды, типу dotnet ef database update и тд. Но не пойму как мне и куда его внести)

    DbContext.Database.EnsureCreated()
    Ответ написан
    Комментировать
  • Как запустить Docker контейнер?

    На этой строке ошибка:
    ports:
       - "7000:80"

    В консоли написано, что приложение слушает 5000 и 5001 порт => нужно писать
    ports:
       - "5000:80"
       - "5001:443"
    Ответ написан
    4 комментария
  • Как настроить docker?

    ayazer
    @ayazer
    Sr. Software Engineer
    Как уже написал Василий Банников - вы собираете проект, не весь солюшен. Потому и падает - оно не может найти свои зависимости. Ниже - пример, обрезаный с рабочего решения:

    FROM mcr.microsoft.com/dotnet/sdk:5.0 AS builder
    COPY . .
    WORKDIR /src
    
    RUN dotnet restore "SolutionName.sln" && \
            dotnet build "SolutionName.sln" -c Release -o /src/build && \
            cd /path/to/proj && \
            dotnet publish "ProjectToPublish.csproj" -c Release -o /src/publish
    
    FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS final
    
    WORKDIR /app
    COPY --from=publish /src/publish .
    
    ENTRYPOINT ["dotnet", "ProjectName.dll"]


    вам по сути надо поправить
    RUN dotnet restore ./build/ShoppingCart.API.csproj
    RUN dotnet publish -c Release -o out


    Ну и да, судя по ошибке (описание которой я бы скопировал если бы вы вставляли текст, а не скриншоты) - у вас таки нет5. Потому и образы соотв. нужно использовать.
    Ответ написан
    1 комментарий
  • Как настроить docker?

    Нужно копировать не только ShoppingCart.API, но и проекты, от которых он зависит
    Ответ написан
    4 комментария
  • Как избежать дублированности наименования?

    sarapinit
    @sarapinit Куратор тега C#
    Точу водой камень
    IsDublicated все время возвращает false потому что написана неверно. Вы инициализируете флаг потом возвращаете его без изменений.
    Попробуйте так
    public async Task<bool> IsDublicated(string label)
    {
         var existedProduct = await _context.Set<Product>()
                    .FirstOrDefaultAsync(property => property.Label.ToLower() == label.ToLower());
         return existedProduct != null;
    }


    И в функции AddAsync у вас неверное условие. Должно быть:
    if (await _unitOfWork.ProductRepository.IsDublicated(product.Label))
    {
         throw new DataDublication("Label already exists.");
    }
    Ответ написан
    1 комментарий
  • Как написать обобщенный фильтр?

    @cicatrix
    было бы большой ошибкой думать
    В данном примере строка сравнивается с Func.

    Я бы сделал так:
    public interface IMyItem
    {
        bool IsMatch(string pattern);
    }
    
    public static IQueryable<T> ApplyFilter<T>(this IQueryable<T> source, string filtertext) where T: IMyItem
    {
        return source.Where(item => item.IsMatch(filtertext));
    }


    Единственный минус - объекты, которые фильтруются, должны будут реализовать интерфейс IMyItem.
    В методе IsMatch, соответственно, должна выполняться проверка, подпадает ли объект под строку поиска или нет.
    Ответ написан
    Комментировать
  • Как отформатировать файл Serilog?

    Да. Есть sink для записи json, вместо голого текста.
    UPD: не sink, а formatter.
    https://github.com/serilog/serilog-formatting-compact
    Ответ написан
    Комментировать
  • Как включить дебаггер в Visual Studio?

    @d-stream
    Готовые решения - не подаю, но...
    для начала стоит убедиться что оптимизация выключена
    (<Optimize>false</Optimize> в *.csproj/Directory.Build.Props ну или мышкой в свойства проекта)
    Ответ написан
    2 комментария
  • Как написать собственный расширяющий метод linq для сущности?

    @Dmitriyq
    Дополню ответы методом сортировки по названию свойства
    public static IOrderedQueryable<TSource> OrderByAscOrDesc<TSource>(this IQueryable<TSource> query, string propName, bool isDesc)
    {
    	var entityType = typeof(TSource);
    	var propInfo = entityType.GetProperty(propName);
    	if (propInfo.DeclaringType != entityType)
    		propInfo = propInfo.DeclaringType.GetProperty(propName);
    
    	if (propInfo == null) return (IOrderedQueryable<TSource>)query;
    
    	var arg = Expression.Parameter(entityType, "x");
    	var property = Expression.MakeMemberAccess(arg, propInfo);
    	var selector = Expression.Lambda(property, new ParameterExpression[] { arg });
    
    	var methodName = isDesc ? "OrderByDescending" : "OrderBy";
    	var method = typeof(Queryable).GetMethods()
    		.Where(x => x.Name == methodName && x.IsGenericMethodDefinition)
    		.Where(x => x.GetParameters().Length == 2)
    		.Single();
    
    	var genericMethod = method.MakeGenericMethod(entityType, propInfo.PropertyType);
    	return (IOrderedQueryable<TSource>)genericMethod.Invoke(genericMethod, new object[] { query, selector });
    }
    Ответ написан
    Комментировать
  • Как написать собственный расширяющий метод linq для сущности?

    На сколько я понял, вам нужно что-то типа
    public static QueryableExtensions {
        public static IQueryable<T> TakePaged<T>(this IQueryable<T> query, int take, int skip) =>
          query.Take(take).Skip(skip);
    }

    С сортировкой и фильтрацией уже сложнее - нужно в рантайме комбинировать деревья выражений.
    Читайте: https://docs.microsoft.com/en-us/dotnet/csharp/pro...


    Но я не пойму куда его запихнуть) Если впихнуть его в этот класс, где находится работа с entity, то ошибку получаю, что расширяющие методы должны быть в non-generic-классах...

    Пихать нужно в отдельный класс. А метода вашего должен быть свой generic-параметр
    https://docs.microsoft.com/en-us/dotnet/csharp/pro...
    Ответ написан
    1 комментарий
  • Как написать собственный расширяющий метод linq для сущности?

    @dmitryKovalskiy
    программист средней руки
    1) Методы расширения должны быть расположены в сторонних static-классах. Создаем класс static SomeEntityMethodExtensions и внутри пишем что угодно.
    2) Используйте IQueryable. C IEnumerable получите туже проблему что у вас и была - выгрузите все на сервер и будете крутить данные в пустую.

    public static IQueryable<TEntity> ApplyFiltEntity(this IQueryable<TEntity> entity,
            Func<TEntity, string> field, string filter)
        {
            return entity.Where(x => field(x).Contains(filter));
        }
    </code >
    Однако скорее всего у вас будут проблемы с трансляцией переданной функции. Преобразовать ее в SQL 99% не выйдет
    Ответ написан
    2 комментария
  • Как работать в строке с "{"?

    @kttotto
    пофиг на чем писать
    Проблема не в самих скобках, а именно во вложенных "{1}", компилятор не умеет их интерпретировать. Как вариант возможно такое решение
    Console.WriteLine("new Item { Thumbnail = " + "{1}" + " }");

    Но у меня подозрение, что Вы хотите сделать это
    Console.WriteLine("new Item { Thumbnail = " + $"{item.Thumbnail}" + " }");
    Ответ написан
    2 комментария
  • Как работать в строке с "{"?

    edward_freedom
    @edward_freedom
    Там в подсказках было, что тебе нужно продублировать фигурные скобки и отсчет начинается с 0
    Console.WriteLine("new Item{{ Thumbnail = {0} }}", item.Thumbnail);
    Ответ написан
    Комментировать
  • Как правильно пушить коммиты?

    iiiBird
    @iiiBird
    Пока ты спишь - твой конкурент совершенствуется
    1) Когда продукт не сделан окончательно - это можно сравнить с твоими учебными проектами. Также хоть в мастер пуш. Вся "правильная" работа с git начинается, когда проект уже зарелизили. Потому что теперь продакшн нельзя ломать.
    2) В остальном логика верна. Делаешь ветку для фичи и ведешь ее.

    должен ли разработчик коммитить все что сделал одним коммитом? или ему нужно к примеру, models папку - закоммитить как "models / entities" и тд прочие папки с файлами?

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

    Нужно ли делать merge разработчику после проверки высшего по рангу товарища? И куда это должно быть в dev?

    ну тут также как обговорите.
    Ответ написан
    Комментировать
  • Как правильно пушить коммиты?

    saboteur_kiev
    @saboteur_kiev Куратор тега Git
    software engineer
    Никаких "должен одним коммитом или не должен" не существует

    Если ты один, ты можешь вести только один мастер.

    Если команда - вы договариваетесь в команде, как вам удобнее, оформляете это в правила и следуете.

    Продукты бывают разные.
    Довольно распространет git-flow, но его бездумное применение приводит к бардаку и оверинжинерингу.

    Если есть какая-то фича, которую ты за один коммит не можешь сделать, то можешь сделать отдельный фича-бренч для этой фичи, И вести в ней разработку. При этому в случае срочной необходимости что-то исправить в мастере, у тебя мастер стабильный. Потом как фичу доделаешь - вмержишь в мастер.

    Второй вариант использования фича-бренча - это pull request, если вы используете какой-нить code review, и перед пушем в мастер должны быть выполнены дополнительные действия - ручной код ревью или какие-от автоматические тесты, в общем что там в вашем CI наделаете.

    Бывает, что одновременно разрабатывается несколько версий, тогда и "мастеров" может быть несколько (релизные ветки).

    В простых проектах, обычно просто договариваются о name-convention для веток, с которыми потом проще генерировать различные release-notes, или в названии ветки включать номер тикета в багтрекере.
    Ответ написан
    Комментировать