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

    @carbon88
    .NET developer/ORM developer
    А в чем собственно проблема?
    случай 1: сервер базы данных принадлежит хостингу. соответственно он и закрыл доступ на создание баз данных от греха подальше, что собственно понятно и резонно иначе каждый Вася будет там базы создавать и удалять. В этом случае наверняка база данных уже существует и не стоит ее дропать, наверняка EF умеет работать с существующей базой а не создавать ее заново.
    случай 2: сервер баз данных это ваш физический или виртуальный сервер за который вы полностью в ответе. ну так создайте пользователя который сможет создавать базы данных и создавайте через него.
    случай 3 : все то же что и во втором случае только вы не являетесь Администратором сервера баз данных. ну так подергайте администратора чтобы дал права или хотя бы превратил ситуацию в случай 1 - то есть гарантировал вам базу данных а вы уже создаете таблицы и прочую нужную хрень.
    Ответ написан
    3 комментария
  • Авторизация в ASP.NET, доступ к защищённой области. Как правильно?

    @carbon88
    .NET developer/ORM developer
    Там нужно положить в директорию Web.config. В этом файле прописываются разрешения и запреты.
    Уже есть на stackoverflow
    Ответ написан
  • Как оптимизировать код?

    @carbon88
    .NET developer/ORM developer
    Добавлю свою ложку дегтя плюсом к предыдущим ответам

    1) query.Count() > 0 если это метод из Linq а не определенный в классе то лучше так не делать. Он переберет весь IEnumerable, а оно вам надо? Если нужно проверить есть ли в последовательности элементы используйте query.Any()

    2)в if-ах можно определить только запрос. а далее просто
    if (query.Any())
    {
       ViewData["uncheckedProfiles"] = query.ToPagedList(pageNumber, pageSize);
    }
    else
    {
       ViewData["uncheckedProfilesSearch"] = "NoResult";
    }

    или

    3) думаю можно что-то сделать с вашими ToUpper(). например почему бы сразу не привести все что нужно (если оно нужно) к верхнему регистру и не делать лишних операций. потому что судя по описанию на MSDN ToUpper() выдает копию строки, то есть это как минимум каждый раз инициализация переменной и копирование из одной переменной в другую. А вообще почитайте про работу со строками с точки зрения внутреннего устройства, например рихтера "CLR via C#"

    4) вообще судя по вашему запросу у вас рознится только часть Where. в остальном это один и тот же Linq. То есть можно написать все красивее, пошагово определив все состовляющие.

    var query = MongoDBInstance.GetMongoDatabase.GetCollection<User>("UserInfo")
        .AsQueryable<User>();
    if (!string.IsNullOrEmpty(searchByName)) {
        var upperCaseSearchString = searchByName.ToUpper()
        string[] names = upperCaseSearchString.Split(' ');
        if (names.Length > 1) {
             query = query.Where(i=>
                                !i.IsActivated && ((
                                    i.Name.ToUpper().Contains(names[0]) &&
                                    i.LastName.ToUpper().Contains(names[1])) ||
                                (i.Name.ToUpper().Contains(names[1]) &&
                                 i.LastName.ToUpper().Contains(names[0]))));
        }
        else {
            query = query.Where(i=>
                                !i.IsActivated && (
                                    i.Name.ToUpper().Contains(upperCaseSearchString) ||
                                    i.LastName.ToUpper().Contains(upperCaseSearchString)));
              
        }
    }
    else {
        query = query.Where(i=>!i.IsActivated);
    }
    query = query.OrderBy(i=>i.ID);
    if (query.Any()) {
        ViewData["uncheckedProfiles"] = query.ToPagedList(pageNumber, pageSize);
    }
    else {
        ViewData["uncheckedProfilesSearch"] = "NoResult";
    }


    За скобки не ручаюсь, писал прям в редакторе тостера
    Ответ написан
    2 комментария