Ответы пользователя по тегу ASP.NET
  • Как правильно в ASP .NET и EF организовать обновление объекта?

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

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

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

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

    @kttotto
    пофиг на чем писать
    На днях сдаем достаточно крупный проект на asp.net core, который не только на тестах, но и уже в бою отработал. Причем это не первый сданный проект на core. Все замечательно работает. Каких то особых проблем, что это именно core, не возникало.
    Ответ написан
    3 комментария
  • Почему 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 комментария
  • Как убрать ограничение на загрузку больших файлов на сервер ASP.NET MVC?

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

    @kttotto
    пофиг на чем писать
    Вы отвечаете на свой вопрос, прежде чем его задать)

    При тестировании мокают объекты, чтобы разорвать внешние зависимости.

    Необходимо мокать объекты, от которых тестируемый метод зависит, чтобы не тестировать эти самые объекты. Тогда мы будем тестировать только реализацию самого метода. Мы подразумеваем, что эти объекты работают правильно и действую так, как мы того от них ожидаем. Это значит, что мы можем настроить ожидаемое от них поведение.
    mock.Setup(x=>x.Users).Returns(new List<Users>(){ ... }

    Т.е. мы точно знаем, что при обращении к нашему зависимому объекту через Users нам вернется весь список наших пользователей, причем точно знаем каких. Благодаря абстрагированию от зависимостей, если тестируемый метод провалится, то мы точно будем знать, что виновата реализация метода, а не реализация зависимостей.

    В случае тестирования с конкретными зависимыми объектами, мы такого сказать не сможем. Потому что мы точно не можем знать, какие сущности есть в БД, что есть соединение с БД и что сама БД нормально работает.
    Ответ написан
    Комментировать
  • Почему EF не хочет сохранять сущность?

    @kttotto Автор вопроса
    пофиг на чем писать
    Вопрос решен. Действительно создавалось два контекста. Только ошибка была не в ninject, а в моей реализации DataManger. Получалось, что сущность была в одном контексте, а внешний ключ указывал на сущность в другом контексте. Вот оно и не хотело сохраняться.

    Всем спасибо за соучастие)
    Ответ написан
    Комментировать
  • Как в EF настроить одну сущность с двумя внешними ссылками на другую сущность?

    @kttotto Автор вопроса
    пофиг на чем писать
    Ответ найден. Решилось таким способом
    [InverseProperty("OwnerStage")]
    public virtual ICollection<Motion> Motions { get; set; }
    Ответ написан
    Комментировать
  • ASP.NET 5 это ASP.NET Core 1.0?

    @kttotto
    пофиг на чем писать
    Нет, это не одно и то же. ASP.NET это то, на чем делается ASP.NET MVC. Соответственно это новая версия ASP, 5-ая (основная фича поддержка core 1.0, кросспратформенности). Пятую версию асп использует новая версия MVC 6.
    Ответ написан
    1 комментарий
  • Почему может не работать бандл MVC 5?

    @kttotto Автор вопроса
    пофиг на чем писать
    Вопрос снимается. После того, как выяснилось, что у коллег ветка работает нормально, полазил по нескольким своим веткам, пытаясь понять где именно глюкануло, и тут оно волшебным образом заработало. Что именно было не так, осталось загадкой, видимо глюк студии. Жалко убитого дня на поиск непонятно чего.
    Ответ написан
    Комментировать
  • Entity Framework связь элементов одной таблицы, чяднт?

    @kttotto
    пофиг на чем писать
    Чтобы увидеть какой запрос формирует Entity, в конфиг, в раздел entity, надо добавить
    <
    <interceptors>
          <interceptor type="System.Data.Entity.Infrastructure.Interception.DatabaseLogger, EntityFramework">
            <parameters>
              <parameter value="C:\temp\LogOutput.txt" />
              <parameter value="true" type="System.Boolean" />
            </parameters>
          </interceptor>
        </interceptors>


    И как то странно Вы связь устанавливаете. Завязываете таблицу саму на себя? Указывая для таблицы связь, Вы должны указать в какой таблице будет внешний ключ на Вашу сущность. Во общем мапинг в таком виде работать не будет.
    Ответ написан
    Комментировать
  • Как объединить два asp.net mvc приложения?

    @kttotto
    пофиг на чем писать
    Для таких дел в ASP.net MVC есть области (Area). Это когда в сайте, Вы как бы создаёте еще подсайт. Правой кнопкой на проекте, добавить область. Автоматом будет добавлен раздел со своими разделами под контроллеры, модели и вьюшки. Так же будет добавлен маршрут. Обычно как раз админки делают в area. Единственное, придется в ссылках, указывать маршрут, область. Таких областей Вы можете создать сколько угодно, логически разделив сайт на разный контекст.
    Ответ написан
    Комментировать
  • Как быть с моделями в ASP.NET MVC?

    @kttotto
    пофиг на чем писать
    Станислав правильно сказал: смотря что называть моделью. Те классы, которые генерит EF, вполне можно называть моделями и даже добавить им логику, может даже какие-то атрибуты. Главное, чтобы все добавки не противоречили тем соответствиям, что EF установил.
    Ответ написан
    Комментировать
  • Начать изучение ASP.NET с 5-ой версии или с 4-ой?

    @kttotto
    пофиг на чем писать
    Учите то, в чем есть потребность. 5-я и 6-я версии действительно сильно отличаются. Если начать, то можно и с 6-ой, пока изучите, наэкспериментируетесь, может новые проекты будут уже только на ней и делать.
    Ответ написан
    Комментировать
  • Как настроить сериализацию параметров запроса?

    @kttotto
    пофиг на чем писать
    Думаю, что у Вас на форме нет поля для Tags. Если вводить данные вручную для Tags на форме не надо , то сделайте его скрытым, но проинициализируйте теми данными, которые Вы захотите получить при получении данных с формы.
    Ответ написан
    Комментировать
  • Как минимизировать нагрузку на сервер для чата на ASP.NET MVC с SignalR?

    @kttotto
    пофиг на чем писать
    У меня точно такой же вопрос стоит уже вторую неделю, только в другом контексте. Мониторинг GPS трекеров. Есть серверная часть, которая по UDP протоколу получает сообщение от трекера и которая так же имеет доступ к БД, чтоб понять кому принадлежит трекер, затем сообщение уходит на хаб SignalR для отсылки веб-клиенту. Получается что у меня два конекшина к базе, от сервера с сайтом (ASP.NET MVC) и от сервера с хабом. И тоже думаю как сделать одно соединение, чтоб базу меньше напрягать, и тоже кручусь вокруг WCF или Web API.
    Ответ написан
    Комментировать
  • Как отловить ошибку приведения даты в C#?

    @kttotto
    пофиг на чем писать
    Все дело в формате даты. При ее написании нужно учитывать культуру, где вы ее читать будете.
    Ответ написан
    Комментировать