1

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

<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.EdmMetadatadbo.Pictures

表很好,但为什么不使用这些表创建一个名为PicturesDatabase的新数据库(如连接字符串)?

我试过几次删除这个表,我确实尝试过创建 PicturesDatabase 并使用它......但它仍然会生成这个 MyAppNamespace.Models.PicturesCatalog。它有什么问题?我该如何解决?

4

1 回答 1

5

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>
于 2010-11-25T23:15:36.327 回答