Как обновить базу данных .. .mdf читается только после развертывания [duplicate]

У меня есть другая перспектива ответить на это.

При работе на разных уровнях, например, в приложении MVC, контроллеру нужны службы для вызова бизнес-операций. В таких сценариях контейнер инжекции зависимостей может использоваться для инициализации служб, чтобы исключить исключение NullReferenceException. Это означает, что вам не нужно беспокоиться о проверке нулевого значения и просто вызвать службы с контроллера, как будто они всегда будут доступны (и инициализированы) как одиночный или прототип.

public class MyController
{
    private ServiceA serviceA;
    private ServiceB serviceB;

    public MyController(ServiceA serviceA, ServiceB serviceB)
    {
        this.serviceA = serviceA;
        this.serviceB = serviceB;
    }

    public void MyMethod()
    {
        // We don't need to check null because the dependency injection container 
        // injects it, provided you took care of bootstrapping it.
        var someObject = serviceA.DoThis();
    }
}
2
задан Rob 19 April 2011 в 10:43
поделиться

4 ответа

Если файл MDB находится в вашем пути к программе, то разрешения по умолчанию потребуют повышения прав, чтобы иметь возможность записывать файлы - я бы рекомендовал переместить данные в общую папку ApplicationData, где у конечных пользователей будет разрешения записи по умолчанию

1
ответ дан Rowland Shaw 28 August 2018 в 14:26
поделиться

Я столкнулся с этим, связанным с localdb, файл имеет имя:

myfolder/mysolution/myproject/App_Data/something.mdf

Как я исправил это, щелкните правой кнопкой мыши папку верхнего уровня (myfolder), а затем выберите Properties, затем выберите Edit, затем выберите Users, добавьте пользователям либо разрешение Modify, либо оба Modify и полный элемент управления (это среда разработки), а затем нажмите Apply.

Таким образом, другими словами, по моему опыту, неважно, в какую папку вы вставляете localdb, вам просто нужно дать пользователям разрешение на запись.

0
ответ дан Greg Pettit 28 August 2018 в 14:26
поделиться

Большая вещь, которая изменилась между Windows XP и Windows Vista / 7, - это введение UAC, что означает, что пользователи, даже если они созданы как администраторы, обычно не имеют доступа для чтения и записи к «важным» местоположениям, таким как %programfiles% (обычно C:\Program Files или C:\Program Files (x86)). Вот почему ваше приложение работает в Windows XP, а не в Windows Vista.

Вам необходимо сохранить данные DATA в каталоге %programdata% (обычно C:\ProgramData), если данные распределяются между пользователями по машина или %appdata% (обычно C:\Users\USERNAME_GOES_HERE\AppData\Roaming), если она специфична для данного пользователя. Теперь вы больше не сталкиваетесь с проблемой неспособности записать файл.

Причиной этого является то, что путем хранения данных в каталоге установки программ вы делали неправильную вещь . Windows не помешала вам сделать это раньше, но было довольно широко документировано, что %programfiles% не было подходящим местом для хранения данных.

8
ответ дан Rob 28 August 2018 в 14:26
поделиться

перейдите в папку, где установлена ​​программа, и щелкните правой кнопкой мыши файл базы данных, а Properties -> Security -> Group или Username (щелкните по пользователям один за другим и увидите ниже разрешения)

Если для пользователя, если он не настроен на полный контроль, затем нажмите «РЕДАКТИРОВАТЬ» -> Выберите пользователя и дайте полный контроль.

-1
ответ дан user1045265 28 August 2018 в 14:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: