EF CTP 4数据库名称配置

时间:2010-11-25 21:36:30

标签: entity-framework ado.net ef-code-first

对于示例我正在使用此连接字符串:

<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 个答案:

答案 0 :(得分:5)

System.Data.Entity.Infrastructure.SqlConnectionFactory并不意味着以这种方式使用。此连接工厂包含一个构造函数,允许我们覆盖最终连接sting的,例如用户名,密码和服务器,而不是整个事物。

例如,我们可以像这样更改数据库服务器:

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>