Доступ к sql compact 4 db запрещен в ASP.NET MVC 3 Scaffolding

Это немного странно. Я делаю первую разработку кода MVC 3, используя компактный материал SQL 4. Все работает нормально, но у меня возникают проблемы, когда я пытаюсь установить новый контроллер. Я запускаю диалоговое окно нового контроллера и выбираю свою сущность и контекст данных (оба находятся в отдельной сборке в одном и том же решении) и получаю следующую ошибку:

Не удалось получить метаданные для «MyNamespace.MyClassName». Доступ к файлу базы данных запрещен. [1884, имя файла = C:\Program Files\Microsoft Visual Studio 10.0\Common7\EntityContext.sdf,SeCreateFile]

На данный момент этого файла нет на диске - файл EntityContext.sdf находится в моей папке App_Data. Я не уверен, что он пытается создать этот файл (и если да, то почему?), но если это так, я не вошел в систему как администратор, поэтому у него не будет разрешений. В этом случае мне нужно определить другую рабочую папку или что-то в этом роде?

Я попробовал запустить его от имени администратора, и он работает, поэтому он определенно пытается создать файл в моем каталоге Program Files, где-то должна быть настройка для временных файлов?

Любая помощь будет здорово :)


person Chris Surfleet    schedule 21.09.2011    source источник


Ответы (3)


Вы нашли ответ на вопрос? У меня была такая же проблема, но я решил ее с помощью преобразований развертывания...

В Web.Config я использовал полный путь к SDF:

<configuration>
    <connectionStrings>
        <add 
          name="DBContext" 
          connectionString="Data Source=C:\full-path\DBContext.sdf" 
          providerName="System.Data.SqlServerCe.4.0" />
...

В Web.Release.config я заменяю атрибут connectionString...

<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <connectionStrings>
    <add 
      name="DBContext" 
      connectionString="Data Source=\DBContext.sdf" 
      xdt:Transform="SetAttributes" 
      xdt:Locator="Match(name)"/>
  </connectionStrings>
  <system.web>
    <compilation xdt:Transform="RemoveAttributes(debug)" />
  </system.web>
</configuration>

После выпуска разверните правильный "|DataDirectory|" делается настройка, а не "C:\full-path\".

Я хотел бы исправить исходную проблему, хотя!!

PK :-)

person Paul Kohler    schedule 14.11.2011
comment
Нет, к сожалению, так и не понял :( - person Chris Surfleet; 06.12.2011

Я также столкнулся с той же проблемой при попытке экспортировать сценарий SQL CE db с несколькими утилитами. Получил ошибку "Доступ к файлу базы данных запрещен". Затем я просто подключился к этому db-файлу из VS2010, скопировал строку подключения и... это сработало! :)

person Anton Bocharov    schedule 18.04.2013

Я столкнулся с этой проблемой при использовании T4Scaffolding. Я решил проблему, установив пакет nuget MVCScaffolding и используя шаблон «MVCScaffolding: Controller с действием чтения/записи и представлениями, используя код доступа к данным EF». Он производит аналогичные действия контроллера и представления. Мне не удалось удалить и переустановить пакет nuget T4Scaffolding, чтобы узнать, была ли это ошибка или поврежденная установка.

person VE3IMG    schedule 13.08.2013