Ответы пользователя по тегу C#
  • Как передать экземпляр класса в базу данных не используя entity framework?

    @oleg_ods
    Используйте ADO.Net или Dapper
    Ответ написан
    Комментировать
  • Как запустить задачу меньше чем за 1 мс?

    @oleg_ods
    Операционные системы на которых работает C# не поддерживают Real Time взаимодействие.

    Методы Thread.Sleep(10)/Task.Delay(10) означают что задержка будет как минимум(!) 10 мс, но не дают никакой гарантии что задержка будет ровно 10 мс. То есть это значит что 10 мс поток будет бездействовать, а потом встанет в очередь за получением процессорного времени.

    Как написали выше Вам нужно смотреть в сторону RTOS и более низкоуровневых языков программирования. На настольных ОС такие задачи не решаются.
    Ответ написан
    Комментировать
  • Можно ли начать разрабатывать игры в Unity, зная основы c#?

    @oleg_ods
    Смотря что Вы подразумеваете под фразой «знаю основы».

    Можете устроить себе тест. Возьмите 200 последних вопросов с тэгом Unity с этого ресурса и попробуйте сами на них ответить(большинство проблем в них как раз таки связано с незнанием основ языка). Если нашли ответ на 80% то смело беритесь за Unity, если меньше то у Вас будет список тем по которым Вам нужно подтянуть знания.
    Ответ написан
    3 комментария
  • Как передать список объектов из cshtml в контроллер через javascript?

    @oleg_ods
    В запросе Вы посылаете объект подобной структуры:
    var data = {
                'TabDog': arr,
                'NumberDog': $('#NumberDog').val(),
                'DateDogM': $('#DateDogM').val(),
                'S': $('#S').val(),
                'Po': $('#Po').val(),
                'OrganizDog': $('#OrganizDog').val(),
                'PrimDog': $('#PrimDog').val(),
                'UserDog': $('#UserDog').val(),
                'DateDog': $('#DateDog').val(),
                'TabDog': $('#DateDog').val()
            };


    А в контроллере пытаетесь получить массив чисел типа decimal. Вот сервер и не может корректно забиндить полученные данные.

    Варианты решения:
    1) Принимать в контроллере объект.
    2) Посылать в ajax запросе только массив чисел.
    Ответ написан
  • Как сделать что бы команда выполнилась в определенное время в с#?

    @oleg_ods
    Использовать планировщик задач. Например, Quartz или Hangfire.
    Ответ написан
    7 комментариев
  • Откуда берется новая таблица после переопределения IdentityRole?

    @oleg_ods
    У ApplicationUser и ApplicationRole связь many-to-many. Для ее обслуживания создается дополнительная таблица.

    Если хотите использовать для связи таблицу UserRoles это надо указать явно.

    Пример из документации:

    internal class MyContext : DbContext
    {
        public MyContext(DbContextOptions<MyContext> options)
            : base(options)
        {
        }
    
        public DbSet<Post> Posts { get; set; }
        public DbSet<Tag> Tags { get; set; }
    
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<Post>()
                .HasMany(p => p.Tags)
                .WithMany(p => p.Posts)
                .UsingEntity<PostTag>(
                    j => j
                        .HasOne(pt => pt.Tag)
                        .WithMany(t => t.PostTags)
                        .HasForeignKey(pt => pt.TagId),
                    j => j
                        .HasOne(pt => pt.Post)
                        .WithMany(p => p.PostTags)
                        .HasForeignKey(pt => pt.PostId),
                    j =>
                    {
                        j.Property(pt => pt.PublicationDate).HasDefaultValueSql("CURRENT_TIMESTAMP");
                        j.HasKey(t => new { t.PostId, t.TagId });
                    });
        }
    }
    
    public class Post
    {
        public int PostId { get; set; }
        public string Title { get; set; }
        public string Content { get; set; }
    
        public ICollection<Tag> Tags { get; set; }
        public List<PostTag> PostTags { get; set; }
    }
    
    public class Tag
    {
        public string TagId { get; set; }
    
        public ICollection<Post> Posts { get; set; }
        public List<PostTag> PostTags { get; set; }
    }
    
    public class PostTag
    {
        public DateTime PublicationDate { get; set; }
    
        public int PostId { get; set; }
        public Post Post { get; set; }
    
        public string TagId { get; set; }
        public Tag Tag { get; set; }
    }
    Ответ написан
    2 комментария
  • Ошибка ввода, как исправить?

    @oleg_ods
    В зависимости от локализации ОС в качестве разделителя дробной части может использоваться точка или запятая.

    Для локализаций стран СНГ можно добавить
    Console.ReadLine().Replace(“.”, “,”)

    Тогда будет корректно обрабатывать оба варианта ввода(например «1,2», «1.2»).
    Ответ написан
    Комментировать
  • Как убрать из листа обьект который вышел из поля зрения (вопрос по raycast)?

    @oleg_ods
    У List есть метод Remove(), который как раз таки удаляет объекты из листа.
    Ответ написан
  • C# цикл FOR (вопрос по тестовому заданию)?

    @oleg_ods
    Если предположить что цель метода вернуть List с именами в обратном порядке, то можно развернуть цикл и метод Insert заменить на Add.

    List<string> GetNames() 
    {
       List<string> ss = new List<string>();
       for (int i = 10000000; i >= 0; i--) {
           ss.Add(GetName(i)); // GetName - это просто какая-то функция, которая возвращает нам строку
       }
       return ss;
    }


    List под капотом содержит массив.
    Принцип работы метода Insert:
    1) Проверить достаточно ли места во внутреннем массиве. См. свойство Capacity.
    2) Если недостаточно, то расширить массив в 2 раза.
    3) Сместить все последующие элементы на одну позицию вперед.
    4) Добавить в нужный индекс значение.

    Принцип работы метода Add:
    1) Проверить достаточно ли места во внутреннем массиве. См. свойство Capacity.
    2) Если недостаточно, то расширить массив в 2 раза.
    3) Вставить значение в конец массива.

    Соответственно при использовании метода Insert, в Вашем случае, будет очень много операций копирования значений.

    Второе, если на момент создания List в методе известно кол-во элементов которые он должен содержать, то можно использовать конструктор List(int capacity), который изначально создаст List нужного размера. Так Вы избавитесь от необходимости динамически расширять List при переполнении внутреннего массива.

    P.S. Для общего образования можете погонять альтернативные реализации методов через библиотеку DotNetBenchmark и сравнить на сколько вырастет производительность в каждом случае.
    Ответ написан
  • Как сохранить записи отсортированные в бд?

    @oleg_ods
    Если нужно часто вытаскивать из БД сущности отсортированные по какому-то конкретному полю или набору полей, то возможно для повышения производительности, стоит задуматься о добавлении индекса на это поле/набор полей.
    Ответ написан
    Комментировать
  • Как установить разрешения на папку Users?

    @oleg_ods
    Создать для приложения файл манифеста и запускать его от имени администратора. Вот пример как это сделать тыц

    Или вот еще пару вариантов решения проблемы тык
    Ответ написан
    Комментировать
  • Как сделать проверку на две сущности?

    @oleg_ods
    Не видя самих сущностей сложно что-то советовать. Но их поля идентичны, то можно попробовать поместить их в одну таблицу и добавить булевое поле IsAlternative. Дальше запрашивать все города и сортировать их по полю IsAlternative и брать первый из них. Таким образом если есть основной город вы получите его, если основного нет получите альтернативный, если null обрабатываете ошибку.

    Если сущности по структуре различаются почитайте про ef core inheritance, возможно это то что вам нужно.
    Ответ написан
    Комментировать
  • Как переопределить встроенную валидацию в конвейер обработки запроса .net core?

    @oleg_ods
    Если хотите сделать сообщения об ошибке однотипными можно написать свой ValidationFilter. Что то вроде того как предлагают здесь.
    Ответ написан
    Комментировать
  • Есть ли библиотеки с помощью которых можно перевести строку с английского на русский?

    @oleg_ods
    Можно использовать сторонние API для перевода, например Google.

    Так же, если поискать есть много бесплатных аналогов, но увы, чаще всего, их качество весьма плачевно.
    Ответ написан
    Комментировать
  • Как работает разность последовательностей в Linq?

    @oleg_ods
    Методы Except, Union, Substruct предназначены для работы с множествами(Set).

    Множество, по определению, совокупность уникальных(!) значений.

    То есть при вызове метода Except LINQ сначала преобразует массив {5, 5, 5} в множество(удаляет все повторяющиеся элементы => {5}, а после этого вычитает из него в второй массив, который предварительно тоже преобразует в множество(пустое). Соответственно после вычитания результат остается {5}.

    Если вам нужно в итоге получать {5, 5, 5} , то нужно пользоваться вариантом предложенным выше. Если делать это нужно часто, то есть смысл написать свое расширение для LINQ.
    Ответ написан
    1 комментарий
  • Надо ли знать C# разработчику javascript?

    @oleg_ods
    Если позиция FullStack, то нужно. Если чисто бэкенд, то будет достаточно базовых знаний на уровне принципов работы, системы типов и написания примитивных фунций
    Ответ написан
    Комментировать
  • Как классу Program задать модификатор public в c# 9.0?

    @oleg_ods
    Если не менять модификатор доступа можно для тестирования использовать еще и такой подход.
    Ответ написан
    Комментировать
  • Как получить длительность выполнения всех методов или самый долго выполняющийся метод?

    @oleg_ods
    Есть библиотека DotNetBenchmark. Она как раз таки позволит замерить время выполнения методов, а так же кол-во аллокаций
    Ответ написан
    2 комментария
  • Зачем учить asp.net, если есть js, и зачем учить js если есть asp.net?

    @oleg_ods
    Псс парень, если зайдешь на метаните в разделы php/go/python, то увидишь что там тоже можно создать такую же форму.
    Ответ написан
    Комментировать
  • Как работать с JSON?

    @oleg_ods
    Newtonsoft.Json Занимается только сериализацией/десериализацией, т. е.
    1) строка Json => объект C#
    2) объект C# => строка Json

    Для чтения/записи в файлы используются совсем другие инструменты. Например, FileStream
    Ответ написан
    Комментировать