EF CTP 4 Конфигурация имени базы данных - PullRequest
1 голос
/ 26 ноября 2010

Для примера я использую эту строку подключения:

<connectionStrings>    
<add name="PicturesDatabase" 
         connectionString=" Server=.;
                            Database=SomeprojectDatabase;
                            Trusted_Connection=True;"
         providerName="System.Data.SqlClient"/>
<../>

И затем я использую ее в Application_Start ():

Database.DefaultConnectionFactory =
    new SqlConnectionFactory(ConfigurationManager.
        ConnectionStrings["PicturesDatabase"].ConnectionString);

И в моей базе данных я получаю это действительно странноНовая база данных: MyAppNamespace.Models.PicturesCatalog с двумя таблицами dbo.EdmMetadata и dbo.Pictures

Таблицы в порядке, но почему нет?создать новую базу данных с именем PicturesDatabase (как в строке подключения) с этими таблицами?

Я пытался удалить эту таблицу несколько раз, я пытался создать PicturesDatabase и использовать ее ..но он все еще генерирует этот MyAppNamespace.Models.PicturesCatalog.В чем проблема с этим?И как мне это исправить?

1 Ответ

5 голосов
/ 26 ноября 2010

System.Data.Entity.Infrastructure.SqlConnectionFactory не предназначен для использования таким образом. Эта фабрика соединений включает в себя конструктор, который позволяет нам переопределить штук конечной строки соединения, такой как имя пользователя, пароль и сервер, а не все.

Например, мы можем изменить сервер базы данных следующим образом:

Database.DefaultConnectionFactory = 
        new SqlConnectionFactory("Server=MyDatabaseServer"); 

То, что вы пытаетесь сделать здесь, может быть легко достигнуто путем предоставления в вашем app.config строки подключения, которая соответствует имени вашего DbContext - я предполагаю, что PicturesCatalog :

<connectionStrings>
   <add name="PicturesCatalog" connectionString="data source=.; 
        Initial Catalog=PicturesDatabase; Trusted_Connection=True;"
        providerName="System.Data.SqlClient" />
</connectionStrings>
...