Как я могу отделить «Данные» от моего консольного приложения? - PullRequest
1 голос
/ 02 февраля 2011

У меня есть два проекта:

  • Консольное приложение
  • Библиотека классов

Я хочу, чтобы Class library определял классы, создавал файлы edmxи иметь частичную строку соединения, например:

<add name="BlogEntities" connectionString="metadata=res://*/Blog.csdl|res://*/Blog.ssdl|res://*/Blog.msl;provider=System.Data.SqlClient;provider connection string='{0}'" providerName="System.Data.EntityClient" />

Я хочу, чтобы моя библиотека классов определяла файлы csdl, ssdl и msl.Моему консольному приложению нет дела до метаданных, оно будет определять только database, user и password.

. Как я могу разбить строку подключения на две части, как это?

Ответы [ 3 ]

0 голосов
/ 03 февраля 2011

Создайте класс в своей библиотеке (например, Connector), который позволит вам указать любые значения подключения, которые вам понадобятся (база данных, пользователь, пароль).Затем используйте этот класс в своем консольном приложении и предоставьте необходимые значения, как считаете нужным.

0 голосов
/ 04 февраля 2011

Я обнаружил, что могу назвать все сущности с одинаковыми именами, например, Entities.Мой app.config должен быть в Консольном приложении, но я могу использовать один ConnectionString.

<add name="Entities" connectionString="metadata=res://*/;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=.\SQLExpress;Initial Catalog=Test;Persist Security Info=True;User ID=test;Password=test;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />

Метаданные могут быть установлены на res://*/, и они будут работать глобально. Из MSDN:

Метаданные модели и отображения, используемые Entity Framework, загружаются в пространство метаданных.Эти метаданные кэшируются глобально и доступны для других экземпляров ObjectContext в том же домене приложения.

Я также могу заставить любой подключаемый модуль использовать ConnectionString, передавая конструктор контекста:

new Blogs.Data.Entities("name=Entities");
0 голосов
/ 03 февраля 2011

из моей памяти, если вы создадите модель в классе lib, VS создаст app.config в проекте lib.

Просто объедините содержимое этого файла в app.config библиотеки консоли.

в этом сценарии вы можете иметь конфигурацию «design» в файле app.config библиотеки lib и конфигурацию времени выполнения в app.config консольного приложения.

...