ASP.NET Entity Framework и строки подключения - PullRequest
6 голосов
/ 16 апреля 2011

Я только начал играть с ASP.NET MVC.

 <add name="ApplicationServices" connectionString="Data Source=localhost;Port=3306;Database=test;User id=root;Password=admin;" providerName="MySql.Data.MySqlClient" />
<add name="testEntities" connectionString="metadata=res://*/Models.testDB.csdl|res://*/Models.testDB.ssdl|res://*/Models.testDB.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=localhost;port=3306;database=test;User Id=root;password=admin&quot;" providerName="System.Data.EntityClient" />

VS автоматически создает строки подключения в web.config с деталями БД при добавлении модели данных объекта ADO. Проблема в том, что я использую ASP.NET схему пользователя / привилегии, которая использует строку подключения «ApplicationServices», которая существует по умолчанию. Все эти таблицы, а также таблицы моих приложений находятся в одной и той же БД. Я хочу, чтобы данные БД (хост / пользователь / пароль) исходили из одной строки подключения Или даже если имеется несколько записей в строке подключения, возможно ли получить информацию о базе данных только из одного источника.

Я из мира PHP и не могу понять, как это сделать из других подобных тем, с которыми я столкнулся.

Спасибо

Ответы [ 2 ]

1 голос
/ 16 апреля 2011

Используйте простой подход. Определите только ApplicationServices в конфигурации и создайте строку подключения EF в приложении. ObjectContext предлагает конструкторы с EntityConnection или строку подключения напрямую. Передайте строку подключения ApplicationService в строку строки подключения поставщика в строке подключения EF.

EF предлагает определение строки подключения в части конфигурации, но в 90% случаев единственной частью, которая изменится, является строка подключения поставщика. Информация о файлах csdl, ssdl и msl обычно не изменяется. Единственной причиной для изменения этих ресурсов может быть поддержка нескольких поставщиков базы данных, и в этом случае также изменится часть строки подключения поставщика. По моему мнению, многие приложения могут иметь эти пути ресурсов, жестко закодированные непосредственно в связанном контексте.

1 голос
/ 16 апреля 2011

Вы пробовали просто переименовать "testEntities" в "ApplicationServices"?Таким образом, в итоге вы получите одну строку подключения:

<add name="ApplicationServices" connectionString="metadata=res://*/Models.testDB.csdl|res://*/Models.testDB.ssdl|res://*/Models.testDB.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=localhost;port=3306;database=test;User Id=root;password=admin&quot;" providerName="System.Data.EntityClient" />

Очевидно, что вам потребуется настроить параметры EF, чтобы обновить и имя строки подключения.

Кстати: Entity Framework - избыточная строка соединения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...