ASP.NET MVC 3, SQL Server: таблицы не отображаются в проводнике, но они есть - PullRequest
0 голосов
/ 03 марта 2012

Моя база данных хранится в формате .mdf в App_Data и работает нормально.Мое приложение может добавлять, редактировать, удалять записи.

Но таблицы невидимы.Когда я открываю обозреватель серверов и прикрепляю свой файл .mdf и пытаюсь просмотреть таблицы, там ничего не отображается.Я также прикрепил файл к SQL Server Management Studio, но единственные таблицы, которые отображаются там, находятся в папке System Tables.

Из того, что я смог почерпнуть из технической надписи на MSDN, этоможет быть проблема с разрешениями или правами собственности.Я не знаю о разрешениях, учитывая, что я могу подключиться к базе данных и запросить ее и редактировать / удалять записи.Так что, возможно, право собственности;Я где-то читал, что таблицы, не принадлежащие dbo, могут не отображаться.Но если это так, я не знаю, какое имя моего приложения принадлежит или как заставить Management Studio или даже Server Explorer показывать таблицы, принадлежащие другим пользователям.

Вот строка подключения, если ответ втам:

<add name="EFDBContext" connectionString="Data Source=.\SQLEXPRESS;Integrated Security=SSPI;Initial Catalog=|DataDirectory|MLDatabase.mdf;Database=EFDbContext;User Instance=true" providerName="System.Data.SqlClient"/>

Спасибо всем, кто мог бы указать мне правильное направление!

ETA. эта кажется похожей проблемой, но я не знаю, будет ли применимо решение, так как моя база данных была создана не скриптами, а Entity Framework (модель Code-First).

Ответы [ 4 ]

1 голос
/ 03 марта 2012

У меня была похожая проблема.Я создал сценарий для резервной копии базы данных, добавил ее на сервер mssql и вместо этого указал на новую строку соединений

0 голосов
/ 13 февраля 2016

Пожалуйста, не беспокойтесь. просто необходимо заново настроить строку подключения в файле Web.config соответственно: - удалите постфикс «\ SQLEXPRESS» из имени сервера; - Удалите пару ключ / значение «Пользовательский экземпляр = истина».

Если ваш класс DbContext - это StudentDbContext, тогда поместите Database = StudentDb;

Или

0 голосов
/ 13 ноября 2014

Проверьте тип defaultConnectionFactory в вашей конфигурации.Я ожидаю, что для него установлено значение LocalConnectionFactory, так как это выглядит по умолчанию.

Измените его на следующее, и ваш экземпляр SQL будет использоваться.

<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
  <parameters>
    <parameter value="Data Source=.; Integrated Security=True; MultipleActiveResultSets=True;" />
  </parameters>
</defaultConnectionFactory>

Ваша БД должна появиться в SQL ManagementStudio (SQLMS) с именем, соответствующим пространству имен.

0 голосов
/ 06 марта 2012

Причина, по которой таблицы не отображаются, в том, что их, конечно, не было в формате .mdf. Как я отметил в комментарии, я нашел их в другом месте, в месте, выбранном SQL Server.

Обходной путь - просто позволить EF создать базу данных SQL Server там, где он хочет, остановить службу SQL Server, переместить ее в папку App_Data, соответствующим образом изменить строку подключения и затем присоединить ее к проекту ASP.NET.

Другая проблема заключается в том, что Сетевая служба SQL Server не имеет разрешения на какие-либо действия в папке C: \ Users \ Me или в папке Documents and Settings, пока вы не перейдете в эту папку и не назначите разрешение для сети Сервис напрямую . Тогда и только тогда вы сможете, например, присоединить базу данных к SQL Server Management Studio. Это верно даже тогда, когда Visual Studio устанавливает SQL Server ... и затем запрещает ему доступ к файлам, в которых VS хранит свои собственные проекты. Я не понимаю этого; IMO - любой разработчик, который знает об этом, и первое, что она собирается сделать, просто чтобы выполнить свою работу, - это в любом случае дать сетевому сервису такое разрешение.

...