• Наиболее исчерпывающее руководство\курс по EF?

    Casper-SC
    @Casper-SC
    Программист (.NET)
    В дополнение к предложенной документации в другом ответе можно посмотреть такую книгу:
    Entity Framework Core 2 для ASP.NET Core MVC для профессионалов | Фримен Адам (ISBN: 978-5-907114-86-9)
    Ответ написан
    Комментировать
  • Наиболее исчерпывающее руководство\курс по EF?

    sarapinit
    @sarapinit Куратор тега C#
    Точу водой камень
    Вот оно
    Самое полное из тех что я знаю
    Постоянно актуализируется самими разработчиками
    Ответ написан
    Комментировать
  • Как отсортировать массив в C#?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    var res = array.OrderByDescending(x=>x);
    Ответ написан
    Комментировать
  • Как я могу создать базу данных в визуальном конструкторе и работать с ней?

    AVollane
    @AVollane
    Начинающий C# разработчик
    Работа с базой данных доступна из Visual Studio при нажатии "вид" => "обозреватель объектов SQL сервер (если работаете с MSSQL Server). Там в узлах посмотрите. А вообще для работ с базами данных в визуальном конструкторе есть Microsoft SQL Server Management Studio или DataGrip от JetBrains.
    Ответ написан
    1 комментарий
  • Как я могу создать базу данных в визуальном конструкторе и работать с ней?

    Можно использовать sqlite3 и там есть визуальный редактор.
    Ответ написан
    Комментировать
  • Какие вы знаете материалы по разработке пользовательских контролов на winforms?

    Павел Агуров — C#. Разработка компонентов в MS Visual Studio 2005/2008
    Ответ написан
    Комментировать
  • Что осваивать для веба после изучения основ C# (классы, методы, конструкторы, интерфейсы)?

    @lucky4
    я не советую, но расскажу как бы я учил и как учился:
    1) изучил шарпы;
    2) минимальные основы sql
    2.1) выборка данных, с агрегативными функциями / с join;
    2.2) создание таблиц(pk, fk) и их отношения

    3) изучил бы ef core(code first подход)
    3.1) что такое fluentApi / data annotaition;
    3.2) разница между eager / explicit / lazy;
    3.3) создание отношений

    4) учил бы .net core web api на практике. В процессе создание веб-приложения ознакомишся с принципом DI, model binding, filtering.

    При создании приложения, посомтри в сторону архитектуры слойной(n-layered / onion architectures). Сделай проект с использованием Rattern Repository(разберись почему его некоторые считают антипаттероном и тд.) + совместно с Rattern Repository используй Unit of Work.

    *покопайся чучуть в asp.net mvc, с razor. пойми разницу между ними двумя.
    **если быстро хочешь на работу, прочитай рихтера, как работает crl(cls/cts), сборщик мусора, домены(будет хорошим бустом).
    Ответ написан
    2 комментария
  • Передать в keybd_event клавиши, выходящие за диапазон byte?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    https://docs.microsoft.com/en-us/windows/win32/inp...
    Control - 0x11
    LControl - 0xA2
    RControl - 0xA3

    System.Windows.Forms.Keys - это не virtual key code.

    Когда работаете с виндовыми библиотеками - всегда обращайте внимание на микрософтовскую документацию, там всё написано.
    Ответ написан
    1 комментарий
  • Подсветка синтаксиса в RichTextBox

    @Porohkun
    Вообще, если вам надо подсвечивать не свое что-то, а какой-то конкретный код, есть готовые неплохие решения, например, ICSharpCode TextEditor.

    Если не ошибаюсь, он же и использован в notepad++. Хотя не уверен, так как слышал это краем уха, а проверять лень.))
    Ответ написан
    Комментировать
  • Подсветка синтаксиса в RichTextBox

    @noname_d
    Насколько я знаю, это возможно сделать только при помощи свойства SelectionColor. Т.е. сперва нужно установить Selection на нужный участок текста, а затем задать цвет. Примерно так:

    private void richTextBox1_TextChanged(object sender, EventArgs e)
    {
        var currentSelStart = richTextBox1.SelectionStart;
        var currentSelLength = richTextBox1.SelectionLength;
    
        richTextBox1.SelectAll();
        richTextBox1.SelectionColor = SystemColors.WindowText;
    
        var matches = Regex.Matches(richTextBox1.Text, @"\bclass\b");
        foreach (var match in matches.Cast<Match>())
        {
            richTextBox1.Select(match.Index, match.Length);
            richTextBox1.SelectionColor = Color.Blue;
        }
    
        richTextBox1.Select(currentSelStart, currentSelLength);
        richTextBox1.SelectionColor = SystemColors.WindowText;
    }

    Разумеется, заново раскрашивать весь текст при каждом изменении неправильно. Это нужно делать более оптимальным образом. Кроме того, желательно отключить перерисовку на время раскрашивания, иначе возможны нежелательные моргания при большом размере текста. В примере этого нет, но тут вроде есть решение.
    Ответ написан
    Комментировать
  • В чем роль Task.Run() и await в асинхронных методах?

    vabka
    @vabka Куратор тега .NET
    Токсичный шарпист
    1.Task.Run нужен для запуска синхронных методов в тредпуле.
    2. Thread.Sleep использовать не рекомендуется, тк есть Task.Delay

    Второй пример действительно похож на опечатку.
    Оба примера плохие: Например если в первом методе убрать await Task.Run, то Thread.Sleep займёт вызывающий поток

    Читайте TAP.docx
    Ответ написан
    Комментировать
  • Связь двух проектов в одном решении?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Решение - это просто способ удобно сгруппировать несколько проектов. Оно нужно только для IDE.
    Взаимосвязи между проектами делаются через PackageReference
    Ответ написан
    Комментировать
  • Связь двух проектов в одном решении?

    BasiC2k
    @BasiC2k
    .NET developer (open to job offers)
    Проекты в одном решении - как правило не взаимосвязаны между собой. Но если например, один проект - это библиотека dll, а второй исполняемый exe, то Вы можете подключить выходную библиотеку у исполняемого файла.
    В этом случае можно одновременно "пилить" оба проекта.
    Также может быть сложный проект, состоящий из нескольких исполняемых файлов. Например - программа для использования клиентом и административная панель.. Логично их объединить в одно решение. Если у этих проектов есть общие библиотеки, то их также можно добавить новыми проектами.
    Собственно организацию взаимодействия нескольких проектов в одном решении Вы настраиваете сами.
    Ответ написан
    Комментировать
  • Чтение и запись лога разными программами?

    @cicatrix
    было бы большой ошибкой думать
    Добавлю к ответу rPman про флаг FileShare описан немного контр-интуитивно. Флаг FileShare устанавливает права на доступ к файлам другим потокам.
    То есть, для потока, который пишет в файл, нужно ставить FileShare.Read - позволить другим читать файл
    Для потока, который читает из файла, нужно ставить FileShare.ReadWrite - позволить другим читать и писать в этот файл.
    Ответ написан
    Комментировать
  • Чтение и запись лога разными программами?

    @rPman
    нужно открывать файл на запись с указанием прав на чтение, пример с FileStream
    Ответ написан
    Комментировать
  • Почему я не могу инициализировать свою структуру как примитивы языка?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    int a(10); // работает
    MyStruct b(); // не работает

    смотри, я пофиксил твой кейс:
    int a(); // не работает
    MyStruct b(); // не работает

    -- теперь одинаково не работает. Ну т.е. одинаково работает, но вместо определения переменной объявляет функцию.
    Или так:
    int a(10); // работает
    MyStruct b(10); // работает

    если завести у MyStruct конструктор с целочисленным параметром.
    Если серьёзно, то в чём проблема-то?
    Ответ написан
  • Почему работает const, а не constexpr для char*?

    @MarkusD Куратор тега C++
    все время мелю чепуху :)
    Дело в том, что указанный слева квалификатор const относится к правой половине спецификации типа до первого модификатора.
    const char& - ссылка на константный символ. Квалификатор - const, модификатор - &.
    const char* - указатель на память константного символа. Квалификатор - const, модификатор - *.

    При этом, указанный справа квалификатор const относится ко всей части спецификации типа левее, включая все модификаторы.
    char* const - константный указатель на память символа.
    const char* const - константный указатель на память константного символа.
    char* const * - указатель на память константного указателя на память символа.
    char& const существовать не может, т.к. квалификаторы не применяется к ссылкам. Тут будет ошибка трансляции.

    И при чем же здесь constexpr? Просто constexpr всегда относится только ко всей спецификации типа со всеми модификаторами.
    const char* - указатель на память константного символа.
    constexpr char* - константный указатель времени компиляции на память символа. Тут нет ошибки, память символа тут считается модифицируемой.

    И если объект с типом constexpr char* получит характеристику ODR-used [?], то после трансляции кода это будет уже объект с типом char* const. Вот так.
    В то же время, строковые литералы имеют тип const char[N], т.е. статически определенный массив константных символов. Такой тип можно привести только к типу const char*.

    В результате, чтобы правильно определить константный указатель времени компиляции на память константного символа, нужно тип определить как constexpr const char*.
    И const в этом месте никакого прямого отношения к constexpr не имеет.
    Ответ написан
    Комментировать
  • Как перехватывать все вызовы console.log?

    0xD34F
    @0xD34F Куратор тега JavaScript
    const oldLog = console.log;
    
    console.log = function(...args) {
      // здесь можете что-нибудь сделать с переданными значениями
    
      oldLog(...args);
    };
    Ответ написан
    Комментировать
  • Как перехватывать все вызовы console.log?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    var originalConsoleLog = console.log;
    
    console.log = function () {
      ...
    
      originalConsoleLog(arguments);
    }
    Ответ написан
    Комментировать