Задать вопрос
  • В каком контроллере правильно разместить метод, возвращающий пользователей группы?

    @kttotto
    пофиг на чем писать
    От того что юзеры ищутся по группе, это не значит что Вы работаете с группами. Выборку Вы же пользователей делаете, возвращать будете пользователей? Я бы это оставил в сервисе для работы с пользователями.
    Ответ написан
    Комментировать
  • Ошибка синтаксического анализатора(ASP.NET MVC), что делать?

    @kttotto
    пофиг на чем писать
    У Вас в коде Codebehind, а в доках везде CodeBehind. Это может быть причиной?
    Ответ написан
    Комментировать
  • Как в C# зарезервировать место под массив?

    @kttotto
    пофиг на чем писать
    Я так понимаю, что Вы просто не сочли нужным почитать за массивы в C#, т.к. эта информация написана в каждом туториале по ним.

    При объявлении массива, вы сразу указываете его размер. После его создания, Вы уже не сможете этот размер изменить (ничего "прибавить" Вы не сможете, можете только изменять значения элементов), именно потому, что под него уже выделена память. Если Вы что-то о массивах читали, то должны знать определение "Массив - это совокупность однотипных данных, расположенных непрерывно в памяти."

    На уровне кода массив это тот же список, у которого просто нет методов для увеличения его размера. Список Вы так же, при объявлении можете указать его начальный размер, но если его будет не хватать, то внутри отработает ресайз, обычно на величину текущего размера умноженного на два (есть варианты, когда размер прыгает по простым числам). Частый ресайз это не очень хорошо, т.к затрачивается время на резервирование нового пространства и копирования туда значений, плюс будет мусор для gc. Это касается List, т.к. он просто надстройка над Array.

    Есть другие виды списков, которые внутри являются связанными списками. Вообще C# достаточно богат видами списков, их желательно знать, чтоб правильно выбрать необходимый под свою задачу. И как я понял, Вы хотите массив, с возможностью изменять его размер. Тогда Вам нужен List, можете задать ему начальный размер new List(100). Увеличение будет происходить автоматом.
    Ответ написан
    Комментировать
  • Как правильно в ASP .NET и EF организовать обновление объекта?

    @kttotto
    пофиг на чем писать
    Ответ написан
    Комментировать
  • Можно ли сохранить в ресурсах или в настройках приложения список (List)?

    @kttotto
    пофиг на чем писать
    Вариант первый, самый простой. Заранее в сетинге сделать поле типа стринг для списка. Список сереализовать в json и сохранять его туда. Ну при чтении читаете строку и десериализуете в свой список.
    var listStr = JsonConvert.SerializeObject(new List<Any>());
    Properties.Settings.Default.MyList = listStr;
    
    listStr = Properties.Settings.Default.MyList;
    var list = JsonConvert.DeserializeObject<List<Any>>(listStr);

    И вариант второй, вообще программно хорошо описан тут
    Ответ написан
    Комментировать
  • Инициализация git. Вернуть удаленные файлы?

    @kttotto
    пофиг на чем писать
    Если отменили незакомиченные изменения, то никак.
    VS создал репозиторий, он пустой, это его первое начальное состояние, затем добавились туда изменения, затем не зафиксировав изменения, эти изменения отменили. Git знает только зафиксированные состояния, поэтому к ближайшему он и откатился, к пустому проекту.
    Вот только случайно не отменишь изменения, надо на кнопку подтверждения нажать.
    Ответ написан
    Комментировать
  • Какие практические курсы по программированию вы знаете (не базового уровня)?

    @kttotto
    пофиг на чем писать
    На гикбрейнс точно есть курсы в режиме стажировки. Делают проект с нуля, стараясь пройти по всем шагам методологий. Но этот курс можно купить только предварительно купив у них базовый курс )) Т.е. сначала придется А и Б в любом случае у них учить.
    Ответ написан
    Комментировать
  • Как можно обрезать?

    @kttotto
    пофиг на чем писать
    Можно сделать сплит по пробелу и удалить два последних слова.
    Ответ написан
    Комментировать
  • Как задать сеттер для вложенной коллекции объектов?

    @kttotto
    пофиг на чем писать
    В Вашем случае поле Phones будет пытаться десериализовать в ICollection<string>, но т.к. в модели ICollection<Phone>, то наверное будет эксепшн о невозможности преобразование.

    Одним из решений является ответ выше, реализовать свой JsonConverter (по образу как по ссылке, под Ваш случай там небольшие изменения) и пометить поле Phonesатрибутом с этим конвертером.

    Но я бы так не делал. Для меня есть разница между моделями которые ходят между запросами и моделями с которыми работает логика. Поэтому одна модель для Вашего запроса с полем типа ICollection<string> (у меня эта модель называлась бы ContractDTO), и потом я бы уже ее мапил в Contract, в котором поле Ponesбудет типа ICollection<Phone>. Делать это можно либо библиотекой automaper, либо руками, через modelDTO.Select(x => new Model { ... });
    Ответ написан
  • Какие есть готовые C# библиотеки для работы с геообластями, ну или хотя бы с геометрией?

    @kttotto Автор вопроса
    пофиг на чем писать
    Решил вопрос руками. Переводил в прямоугольные координаты, трансформировал, потом обратно. Погрешности правда есть, но в разы меньше, чем большинство других способов.
    Ответ написан
    Комментировать
  • Почему другие могут перезаписать файл?

    @kttotto
    пофиг на чем писать
    Не совсем понятен вопрос. Если нужны права доступа пользователя к файлу, то их надо проверять перед чтением файла.

    По идее пока поток открыт, то доступ к файлу будет заблокирован, при попытке получить еще один доступ будет выскакивать эксепшин. Можно посмотреть, после while поставить брекпоинт или thread.sleep и с второго приложения попытаться прочитать файл.

    И если создание потока прячется в using, то нет смысла прятать код в try/finally и руками вызывать close(). Юзинг как раз и предназначен для того, чтоб об этом не беспокоиться, он сам разворачивается в try/finally, в котором поток и закроется.
    Ответ написан
    Комментировать
  • Новичку учить EF или ADO.NET?

    @kttotto
    пофиг на чем писать
    EF проще в употреблении и в освоении я считаю тоже. Но с EF становится трудно, когда приложению требуется справляться с большой нагрузкой запросов, приходится выкручиваться, что-то придумывать, поэтому там чаще всего используют чистый ADO.NET.
    Ответ написан
    Комментировать
  • Насколько пригоден ASP.NET Core для стартового проекта?

    @kttotto
    пофиг на чем писать
    На днях сдаем достаточно крупный проект на asp.net core, который не только на тестах, но и уже в бою отработал. Причем это не первый сданный проект на core. Все замечательно работает. Каких то особых проблем, что это именно core, не возникало.
    Ответ написан
    3 комментария
  • Не компилируется code в execute. Как сделать цикл?

    @kttotto Автор вопроса
    пофиг на чем писать
    Вообщем, сделал запрос через POST и все нормально. Через GET так и не удалось отправить +/-, даже кодируя, vk возвращает ошибку.
    Ответ написан
    Комментировать
  • Почему GetUserManager() возвращает null?

    @kttotto Автор вопроса
    пофиг на чем писать
    Решение найдено.

    В файле Startup, строка
    app.UseWebApi(config);
    должна быть в самом низу, после всех ваших настроек.

    И пусть не смущает, что
    app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
    не использует параметр config и вроде как разницы нет. Вообщем разница есть и это имеет значение.
    Ответ написан
    Комментировать
  • Как в ASP.NET WebApi загрузить файл не записывая его на диск?

    @kttotto Автор вопроса
    пофиг на чем писать
    Вот решение:

    var provider = new MultipartMemoryStreamProvider();
    var result = await content.ReadAsMultipartAsync(provider);
    
    var stream = provider.Contents[0];  // если гарантированно один файл передавался, иначе - пройдитесь с помощью foreach
    var fileName = stream.Headers.ContentDisposition.FileName.Trim('"');
    var imgStream = await stream.ReadAsStreamAsync();
    var img = GetImageResize(Image.FromStream(imgStream), width, height);
    
    img.Save($"{basePath}\\{fileName}");


    Как заметили, просто вместо потока этого вида MultipartFormDataStreamProvider, создается этот MultipartMemoryStreamProvider.
    Ответ написан
    Комментировать
  • Я не умею готовить репозиторий или он просто не очень?

    @kttotto
    пофиг на чем писать
    В принципе пост выше ответил, но я тоже добавлю.

    Если Вы каждый запрос будете закрывать ToList(), то действительно, на каждый такое действие будет запрос в бд. Если используете LINQ, даже если будет несколько строк кода, сформируется один запрос к бд. И репозитории чаще оборачивают в один сервис, централизованный доступ к данным и работают уже с ним.

    Users.Find(id).Logs.Where(х => x.Date == date) или
    Logs.Where(x => x.UserId == userId && x.Date == date)

    В любом случае будет один запрос.

    И под каждый сложный запрос (часто востребованный) добавляют метод в интерфейс.

    Надо-не надо, это личное дело, если проектом только один человек занимается. Если его надо поддерживать, развивать, то приходится думать о гибкости. И не всегда меняют провайдера, могут уйти в чистый ado.net, если orm перестает тянуть какие то запросы. Поэтому без репозитория тут проблемно.
    Ответ написан
    Комментировать
  • Каков наиболее оптимальный подход к созданию ViewModel?

    @kttotto
    пофиг на чем писать
    Наверное я не совсем что-то понял... ViewModel обозначают модели, которые будут уходить во вьюшку, для отображения там информации. Зачем в одну вьюмодел инкапсулировать другую? Эти модели в основном содержат только необходимую инфу для вьюшки и никакой логики. Если в доменной модели Вам списки авто не нужны, то не стоит их там и делать. Нужно инициализировать вьюмодел нужным списком и эту модель отдавать уже вьшке. Вьюмодел инициализируется либо вручную доменной моделью, либо автомапером.
    Ответ написан
    4 комментария
  • Как получить данные из связанной таблицы Entity Framework?

    @kttotto
    пофиг на чем писать
    Немного странный код Вы привели. А можно увидеть код Вашего dbContext?

    Если Вы используете codfirst, то таблицы связываются настройкой модели через создание виртуальных свойств у модели с указанием внешних ключей и при необходимости настраиваются атрибутами или Fluent API. Тогда данные будут подтягиваться автоматом dbContext.Bid.UserCreated.Id
    Ответ написан
    Комментировать
  • Как убрать ограничение на загрузку больших файлов на сервер ASP.NET MVC?

    @kttotto
    пофиг на чем писать
    Дело не в ограничении, а в ".Result;" на .PostAsync(). Он блокирует отправку, у тебя по идее должно успевать загрузиться 10-20 кБ )). На всей цепочке загрузки файла переделай в async/await, должно заработать.
    Ответ написан