Ответы пользователя по тегу C#
  • Как написать собственный расширяющий метод 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 комментария
  • Какая должна быть модель для данного представления?

    @dmitryKovalskiy
    программист средней руки
    Сделайте HiddenFor для массива данных, а в JS свормируйте этот массив да запишите в hidden-поле.
    Или у вас каждое поле имеет свое назначение, а не просто массив значений?
    Ответ написан
    Комментировать
  • Как правильно использовать async/await в "Репозиторий-Сервис-Контроллер" архитектуре?

    @dmitryKovalskiy
    программист средней руки
    Метод GetLatestAsync у вас обещает вернуть Task, а возвращает объект. объявите его асинхронным(async).
    То что вы не вызываете внутри асинхронных методом - асинхронные какие-либо другие методы конечно плохо, но не смертельно.
    Какие есть пути решения?
    1) Ваш репозиторий должен работать асинхронно(если используете EF - у него есть все необходимые методы. Если используете ADO.NET - зависит от версии .NET. Можно подключить Dapper и репозиторий тоже станет асинхронным)
    2) убрать async/await из объявления метода GetLatestAsync. Пусть просто вернет модель, а не Task<Модель>. Опять же - ваш интерфейс обещает одно, а делает другое. Если внутри реализации нет асинхронности - накой вы ее объявили? На будущее? Тогда см. п.1
    Ответ написан
    1 комментарий
  • Что исправить в строке подключения к базе данных Entity Framework C#?

    @dmitryKovalskiy
    программист средней руки
    Так вам же скриншот все написал. Что вы еще хотите? Согласно скриншоту - у вас модели явно описаны подходом CodeFirst, а показанный connection string имеет ссылки на модели сопоставления классов - сущностям в бд (DatabaseFirst). Тут или крестик или трусы. Насколько я помню подход CodeFirst - connection string должен содержать только расположение сервера БД и реквизиты, достаточные для манипуляции как с данными, так и со структурами таблиц. Касательно переноса - вообще проблемы не понял и не увидел, это уже какие-то ваши фантазии. Приложение содержит конфиг, в нем строки соединения с БД. Что еще вы хотите? Да, при деплое проекта - в полученном дистрибутиве, или что вы там надеплоите, будет конфиг, содержащий connection string
    Ответ написан
  • Как реализовать мониторинг статуса пользователей?

    @dmitryKovalskiy
    программист средней руки
    https://habr.com/company/3cx/blog/265653/ Кажется там раскрываются необходимые вам темы
    Ответ написан
    Комментировать
  • Как соотнести имена файлов с одинаковыми датами?

    @dmitryKovalskiy
    программист средней руки
    Я бы решал грубо и в лоб.
    Даты привести к типу даты и отформатировать дату к виду "yyyy_MM_dd__HH_mm".
    А затем искать подстроку в названии файла
    Ответ написан
    2 комментария
  • Как создать задание в игре?

    @dmitryKovalskiy
    программист средней руки
    Если вас реализует исключительно реализация, то я бы думал в следующую сторону.
    У нас есть объект локации и событие "персонаж прибывает в локацию"(не знаю есть или нет, но в целом думаю вы этот момент можете выявить).
    В качестве обработчика этого события можно вызвать интерфейс квеста (на момент привязки квеста можно рассчитать состояние локации и понять какие предметы есть в ней).
    Ну и в момент возникновения события поднятия предмета - закрыть квест и выдать награду.
    Но это все концепции и никак не связаны с вашей реализацией игры.
    Ответ написан
    Комментировать
  • Как автоматезировать Silverlight?

    @dmitryKovalskiy
    программист средней руки
    Ответ написан
    Комментировать
  • Что делать если в ответе JSON есть пагинация??

    @dmitryKovalskiy
    программист средней руки
    И в чем проблема? ну вызывайте метод API циклом или асинхронными тасками пока все страницы не получите. Уберите хардкод. Или вы хотите что бы вам прям код написали? Тогда это жалоба за задание
    Ответ написан
  • Как загружать изображение в базу данных MS SQL?

    @dmitryKovalskiy
    программист средней руки
    Между разметкой и базой находится пропасть самого разного секретного кода, о котором вы, судя по постановке вопроса, предлагаете догадаться. В чем проблема?
    Под отладкой код проверяли?
    Приходит ли файл в handler запроса?
    Проходит ли все слои бизнес-логики?
    Каким методом пытается сохранить файл в базу? Через вызов хранимой процедуры или прямым Insert или вызовом через некую ORM-прослойку?
    Почему вы не используете тип данных бд - байтовый массив?

    Если ответ на первый вопрос - нет, то скорее всего правильный ответ дал cicatrix
    Ответ написан
    Комментировать
  • Как найти одинаковые вхождения в словаре?

    @dmitryKovalskiy
    программист средней руки
    Если через LINQ то кажется так
    arr1.Where(d => arr2.Contains(d));
    Ответ написан
    Комментировать
  • Возможно ли создать CRM на C#?

    @dmitryKovalskiy
    программист средней руки
    А как вас язык ограничивает в функциональности программного продукта? Да, можете написать CRM. Вопрос - насколько будет удобно его использовать лично вам?! Может язык плохо знаете
    Ответ написан
    3 комментария
  • Как удалить такие дубли из списка C#?

    @dmitryKovalskiy
    программист средней руки
    Не знаю какая у вас бизнес-задача, но я бы реализовал примерно так - последовательно перебирал элементы списка и проверял на наличие в массиве уникальных. если элемент есть - идем дальше, если нету - добавляем. Проблема в том что при больших объемах данных такой алгоритм сильно тормозит. на поздних итерациях поисковые операции будут занимать много времени. Это решаемо конечно, но уже более сложными алгоритмами построения массива уникальных записей.
    Как вариант - сделать через LINQ - GroupBy по тексту.
    Ответ написан
    Комментировать
  • Как реализовать Generic объект из интерфейса?

    @dmitryKovalskiy
    программист средней руки
    Я в интерфейсе вижу какую-то зацикленную ерунду, которую не получается в голове разрулить.
    Вы пишете репозиторий с типом T где Т реализует интерфейс IDbUpdatable при том что сам интерфейс - типизирован от Т(т.е. фактически Repository<IDbUpdatable<IDbUpdatable<...<...<>>>>и т.д.). Он как-то сам в себя куда-то проваливается и как это потом разрулить мне не понятно.
    Ответ написан
    Комментировать
  • Как вывести данные запроса во View ASP?

    @dmitryKovalskiy
    программист средней руки
    Потому что обмен данными должен происходить через типизированные View и модели, а не ViewBag. Если приспичило использовать ViewBag - приводите к конкретным типам и обращайтесь к свойствам. В вашем случае так сделать не выйдет - потому что вы поленились создавать классы и воспользовались анонимными хаками. Как итог - слегка расшибли себе лоб.
    Ответ написан
    3 комментария
  • Коммерческое использование c#?

    @dmitryKovalskiy
    программист средней руки
    C# мы можете использовать как угодно и где угодно. Просто для компиляции руками запускать MSBuild или сразу csc. Читайте лицензионное соглашение на VisualStudio Community Edition. Насколько я помню - там были оговорки позволяющие использовать студию маленькими организациями.
    Ответ написан
    Комментировать
  • Как выполнить Update-Database во время выполнения приложения?

    @dmitryKovalskiy
    программист средней руки
    На мой взгляд: проводить подобные рукоблудия в рамках логики работы приложения - идея ниже среднего.
    А что делать если по каким-то причинам обновление не накатится? Повторять? откатывать на stable-версию какую-то? А если логика приложения завязана на то что база 100% обновится - вообще не знаю что делать. Если вам нужно автоматизировать процесс - я бы на вашем месте смотрел в сторону решений continuous integration. Все-таки обновление контуров это одно, а работа приложения это немножко другой процесс.
    Ответ написан
    1 комментарий
  • С чего начать изучение C#?

    @dmitryKovalskiy
    программист средней руки
    C# - язык не очень для новичка. Слишком много "подковерных интриг" прячущих суть работы программного кода под абстракциями ООП.
    Давай угадаю(есть у меня экстрасенсорное озарение небольшое) - вы мечтаете делать игры для мобильной платформы, потому что сейчас громадье примеров зарабатывания на бесплатных играх тонны бабла встроенными покупками и рекламой. Ну что ж - похвальное начало. Вы услышали что неплохая платформа для разработки - Unity 3D, а писать там надо на C#. И вот хотите за пару недель нырнуть в омут мобильной игровой разработки имея за плечами нулевой опыт разработки, нулевую алгоритмическую базу, нулевую архитектурную базу и много много энтузаизма.

    Сам язык - это уже советовали. Вам поможет фактически любая книжка на обложке которой написано C#. Потому что язык - это набор инструкций. Знание русского языка не делает поэтом или писателем.

    Дальше нужно углубляться в разработку на платформе. Стоить начать с туториалов .

    Попутно неплохо было бы ознакомиться с базовыми алгоритмами и схемами организации данных(списки, стэки, деревья, массивы для чего нужны и в чем разница между ними)

    Подтянуть архитектуру приложений и теорию ООП(в частности паттерны проектирования) просто чтобы начать понимать какого рода абстракции вам нужны. Что такое персонаж, какими он обладает характеристиками, какую иерархию наследования имеет, как связан с муравьем на третьем уровне и как правильно собрать его объект(а заодно и когда) - тут книги советовать трудно, тут больше нужен опыт и желательно чужой(лучше месяц изучать чужие шишки чем год набивать собственные) ищите практику в командах.
    Ответ написан
    1 комментарий
  • Как запустить миграции Entity Framework из кода?

    @dmitryKovalskiy
    программист средней руки
    Очень странно звучит вопрос. Перед каждым unit-тестом не надо накатывать сервер БД. Только перед интеграционными и unit-тестами слоя доступа к данным.
    В чем проблема? Если не знаете где писать - есть атрибуты методов вроде SetUp и TearDown в NUnit позволяющие писать любую логику формирования окружения для прогона тестов в рамках текущего класса тестов.
    Если не знаете что писать - ну можно попробовать вызвать те же консольные комманды PowerShell. Либо более прямые инструкции
    Ответ написан
    Комментировать
  • Какой простой и надежный способ хэширования пароля ASP.NET MVC?

    @dmitryKovalskiy
    программист средней руки
    Касательно архитектуры - тащить репозиторий до уровня контроллера это уровень второй четверти первого класса.
    В идеале у вас должен быть уровень bl который проверит пользователя, выдаст ему сессионную куку или еще какой признак авторизации и вернет результат своей работы. В случае успеха - перенаправить куда-нибудь.
    Касательно хеширования - SHA512 и какой-нибудь алгоритм засолки повеселее(не надо просто лепить соль сбоку).
    Касательно уровня, на котором будет считаться хеш - все зависит от алгоритма авторизации. В вашем случае пахнуло EF и видимо стоит считать хэш на уровне обращения к репозиторию.
    Если будете использовать хранимки - придется тащить пароль не трогая до самой бд и считать хеш там. Иначе появится логика извлечения всей базы пользователей с последующим поиском нужного, который не факт что найдется
    Ответ написан
    2 комментария