2012-03-21 2 views
0

Iv'e получил множество ФОС услуг хостинга услуги на IIS7,Entity Исключение: основной поставщик не удалось открыть

iv'e добавлен в базу данных, чтобы это папка App_Data,

служба ссылается на DAL проект

который держит модель Entity Framework генерируемой из моей БД (БД от хоста службы WCF)

enter image description here

enter image description here

я продолжать получать вышеуказанное исключение сущности с этим внутренним сообщением:

{"An attempt to attach an auto-named database for file C:\\Users\\eranot65\\Documents\\Visual Studio 2010\\Projects\\CustomsManager\\WcfManagerServiceHost\\App_Data\\CustomesDB.mdf failed. A database with the same name exists, or specified file cannot be opened, or it is located on UNC share."} 

iv'e скопирована строку соединения из ДАЛ/app.config к WcfManagerServiceHost/Web.config

add name="CustomesDBEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string='Data Source=.\SQLEXPRESS;AttachDbFilename="C:\Users\eranot65\Documents\Visual Studio 2010\Projects\CustomsManager\WcfManagerServiceHost\App_Data\CustomesDB.mdf";Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True'" providerName="System.Data.EntityClient"  

Это происходит, когда я пытаюсь использовать модель объекта данных источника данных:

public List<Employee> GetEmployees() 
    { 
     List<Employee> employees = null; 
     using (CustomesDBEntities entites = new CustomesDBEntities()) 
     { 
      employees = entites.Employees.ToList<Employee>(); 
     } 
     return employees; 
    } 

Кажется, что БД не используется где-то еще,

(1) Как я могу проверить, держит ли какой-нибудь другой инструмент дескриптор моей БД?

(2) в идеях это происходит?

ответ

0

Скорее всего, проблема заключается в том, что вы одновременно открываете базу данных с помощью Visual Studio и вашего приложения. Строка подключения явно настраивает AttachDbFilename=... AttachDBFilename создает экземпляр пользователя SQL Express, прикрепленный к определенному имени файла DB для однопользовательского режима. В однопользовательском режиме только одно приложение может открывать MDF за раз.

+0

так, что бы Чак Норрис делать? –

2

Я бы рассмотреть возможность проверить одну из двух вещей:

  1. Создать соединение с SQL Express, либо в обозревателе серверов VS, или с помощью студии управления SQL, и убедитесь, что уже не имеют базы данных с этим именем, прикрепленным к вашему серверу.

  2. Перенесите свой проект из его текущего местоположения где-нибудь на диск, который не является специфичным для пользователя (то есть не на рабочем столе, документах и ​​т. Д.), Например - c: \ temp, c: \ projects .. ,Причиной этого является то, что вы используете веб-приложение, и в случае его запуска в IIS личность рабочего процесса - это особый идентификатор, отличный от вашего, который может не иметь прав доступа к файлу базы данных, поскольку он находится в собственная папка вашего пользователя

+0

спасибо, плохо проверьте, что из , что вы предложили первым, это первое, что я сделал, Я также пошел в файлы .mdf и .ldf и установил разрешения для всех с полным контролем. плохо попробуйте второе предложение. –

+0

Я попытался переместить его под C: \ , но он по-прежнему выдает ту же ошибку, в сообщении http://stackoverflow.com/questions/2475008/the-underlying-provider-failed-on-open в "Разрешить Удаленные клиенты "в коде DTC я выполнил шаги, но это не сработало. –

0

хорошо ответ всегда проще, чем вы могли бы подумать

все, что я в конечном итоге делает меняется автоматически генерируется строка соединения

генерируемый моделью EntityFramework, чтобы строка соединения для поиска БД в папке App_Data

моя оригинальная строка соединения:

connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string='Data 
Source=.\SQLEXPRESS;AttachDbFilename=&quot;C:\Users\eranot65\Documents\Visual Studio 2010\Projects\CustomsManager\WcfManagerServiceHost\App_Data\CustomesDB.mdf&quot; 
;Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True'" providerName="System.Data.EntityClient"  

моя отредактированная строка соединения:

connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient; 
provider connection string='Data 
Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\CustomesDB.mdf;Integrated Security=True;;User Instance=True;MultipleActiveResultSets=True'"