Ответы пользователя по тегу C#
  • Есть ли онлайн редакторы C#?

    @MADm
    Ответ написан
    Комментировать
  • C#. Как реализовать выполнение действий на сервере в real-time?

    @MADm
    На реальном примере браузерки:
    1 при начале крафта пишем в базу что игрок крафтит(чтобы залокать его), и пишем datetime когда конец крафта
    2 на клиенте запускаем обратный таймер который раз в н сек опрашивает сервер что там крафтом, сервер возвращает разницу между текущим серверным временем и временем конца крафта, клиент смотрит разницу между клиентским обратным отсчетом и серверным, если нужно корректирует.
    3 на сервере есть таймер который раз в н сек достает всех игроков у которых время конца крафта уже прошло по сравнению с текущим временем, запускает для каждого обработку конца крафта. у меня таймер висел в статике на старте приложения и залокан чтоб не пробуксовывал. но мне кажется такое решение плохое и лучше использовать owin типа quartz или вообще службу windows
    Ответ написан
  • Как построить PartialView таким образом чтобы связывание модели срабатывало?

    @MADm Автор вопроса
    Всеже вышло нагуглить решение, всегото нужно было знать параметры для рендера partial view

    @Html.Partial("~/Views/Company/CreatePartial.cshtml", Model.companyViewModel, new ViewDataDictionary { TemplateInfo = new TemplateInfo { HtmlFieldPrefix = "companyViewModel" }});
    Ответ написан
    Комментировать
  • Зачем нужен Stream в C#?

    @MADm
    Cудя по всему вы используете Firebird. Я не могу понять какая именно библиотека используется.
    Вот тут смотрели? codeproject могу предположить что нужно получать данные вот так userBlob = reader[номер столбца];
    Но советую лучше прочитать документацию по конкретной библиотеке что используете, или использовать другую библиотеку для вашей бд.
    Ответ написан
    5 комментариев
  • Как писать тесты в asp.net mvc не затрагивая Entity Framework?

    @MADm Автор вопроса
    Дописал мокирование remove, removerange, add, addrange и засунул в обобщенный метод
    public static DbSet<T> MockDbSet<T>(List<T> table) where T : class
            {
                var dbSet = new Mock<DbSet<T>>();
                dbSet.As<IQueryable<T>>().Setup(q => q.Provider).Returns(() => table.AsQueryable().Provider);
                dbSet.As<IQueryable<T>>().Setup(q => q.Expression).Returns(() => table.AsQueryable().Expression);
                dbSet.As<IQueryable<T>>().Setup(q => q.ElementType).Returns(() => table.AsQueryable().ElementType);
                dbSet.As<IQueryable<T>>().Setup(q => q.GetEnumerator()).Returns(() => table.AsQueryable().GetEnumerator());
                dbSet.Setup(set => set.Add(It.IsAny<T>())).Callback<T>(table.Add);
                dbSet.Setup(set => set.AddRange(It.IsAny<IEnumerable<T>>())).Callback<IEnumerable<T>>(table.AddRange);
                dbSet.Setup(set => set.Remove(It.IsAny<T>())).Callback<T>(t => table.Remove(t));
                dbSet.Setup(set => set.RemoveRange(It.IsAny<IEnumerable<T>>())).Callback<IEnumerable<T>>(ts =>
                {
                    foreach (var t in ts) { table.Remove(t); }
                });
                return dbSet.Object;
            }

    Для моих нужд пока подходит.
    Объясню почему мне не нравится подход с репозиториями. Если не использовать generic репозиторий тогда код вырастет в n раз на каждую таблицу. Тогда получается надо сделать generic потом унаследовать от него каждую сущность и получается что у нас куча репозиториев. Как к ним тогда обращатся? суем их в один класс и получаем тот самый dbcontext который генерит ef а репозитории в нем это теже dbset. Тоесть мы создаем абстракцию над абстракцией чтоб смогли от неё унаследовать методы для тестов. Смысл из такого кроме очевидных минусов потери части функционала контекста я не особо вижу.
    Ответ написан