Строка подключения к удаленной БД при использовании EntityFramework
У меня есть приложение ASP.NET MVC, и я использую EntityFramework 5.0. Я также установил пакет «CodeFirstMembershipProvider» Nuget, который предоставил некоторый код для членства в ASP.NET, и, я считаю, также внес изменения в мой web.config.
В основном, моя проблема заключается в том, что мое приложение отлично работает на локальном экземпляре SQL Server, но когда я указываю удаленный БД, используя эту строку соединения:
<add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="Data Source=*******************, 14330;Integrated Security=False;Database=qrcodetr_database;Uid=qrcodetr_admin;Password=*********; Connect Timeout=15;Encrypt=False;Network Library=dbmssocn;Packet Size=4096" />
(пароль и имя хоста отредактированы)
- Запрос SQL Server на проценты
- Entity Framework и группировка по неделям с установленным днем начала недели
- Отношения «многие ко многим» слева и справа перевернули после обновления Entity Framework 5
- Пользовательское свойство Entity Framework со многими функциями навигации
- Локальный IIS не может подключиться к локальной базе данных
он не может использовать эту строку соединения. Он по-прежнему пытается вместо этого использовать локальный экземпляр SQL Server, поэтому он работает локально, но когда я пытаюсь запустить его на моем веб-узле и в узле базы данных, он терпит неудачу – поскольку он пытается использовать локальный экземпляр SQL-сервера, который он не может выполнить в моей базе данных хост. Пульт удаленной базы данных использует SQL Server 2008 R2.
Кто-нибудь знает, почему это может быть или что я могу сделать, чтобы решить эту проблему?
Я не буду публиковать весь web.config, но вот несколько строк, которые могут иметь значение:
<add key="DatabaseInitializerForType TreasureHuntDB, QrCodeTreasureHunter" value="DataContextInitializer, QrCodeTreasureHunter"
<sessionState mode="InProc" customProvider="DefaultSessionProvider"> <providers> <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" /> </providers> </sessionState> <membership defaultProvider="CodeFirstMembershipProvider"> <providers> <add name="CodeFirstMembershipProvider" type="CodeFirstMembershipProvider" connectionStringName="DefaultConnection" /> </providers> </membership> <roleManager enabled="true" defaultProvider="CodeFirstRoleProvider"> <providers> <clear /> <add name="CodeFirstRoleProvider" type="CodeFirstRoleProvider" connectionStringName="DefaultConnection" /> </providers> </roleManager>
<entityFramework> <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> </entityFramework>
Кстати, я могу успешно подключиться к удаленной БД через SQL Server 2008, поэтому проблема определенно кажется проблемой конфигурации на моем конце.
Кстати, я использую DataContextInitializer, который настроен на «CreateDatabaseIfNotExists». Я установил это для этого, потому что в размещенной базе данных у меня нет разрешений для CREATE или DROP базы данных, поэтому я сделал это, создав резервную копию одного из локально созданных (в SQL Server Express ) и использовал функцию восстановления для восстановления файла в моей размещенной базе данных. Поэтому у меня есть база данных, она просто не будет работать с моим приложением.
- База данных Windows Azure SQL - Столбец Auto Increance Identity пропускает значения
- Как я могу увидеть текст SQL, отправленный LINQ в мою базу данных?
- Удалите дополнительный просмотр столбцов RowVersion от Entity Framework
- Оператор INSERT противоречил ошибке ограничения FOREIGN KEY
- Вставка большого количества объектов в SQL Server 2012
- Как я могу собрать текущий идентификатор сеанса SQL Server из Entity Framework DbContext?
- С веб-API, как Entity Framework знает, что изменилось в объекте?
- Вычисленная колонка в EF Code First
Кажется, вы не указываете EF имя строки подключения, поэтому просто создаете ее по соглашению. Вы можете передать имя в DbContext ctor в форме "Name=DefaultConnection"
или переименовать строку подключения в своей конфигурации, чтобы ее имя совпадало с именем производного класса DbContext.
Этот вопрос и ответ подсказывают, что ваша строка строки подключения должна выглядеть так:
<connectionStrings> <clear /> <!--- need this to prevent using LocalSqlServer from machine.config or somewhere becouse it is not present when when publish to hosting --> <add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="etc" /> </connectionStrings>