如何在代码优先 Entity Framework / MVC应用程序中更改连接字符串?我正在尝试将其转移到实时站点,但它忽略了Web配置值,仍然引用了我的数据库本地版本。
这是我的web.config的连接字符串部分:
<add name="MembershipConnectionString" connectionString="Data Source=192.168.1.43;Initial Catalog=Website.Models.IntranetApplication;User Id=[UserName];Password=[Password];timeout=30" />
<add name="WebsiteConnectionString" connectionString="Data Source=192.168.1.43;Initial Catalog=Website.Models.IntranetApplication;User Id=[UserName];Password=[Password];timeout=30" />
<add name="Entities" connectionString="metadata=res://*/Models.IntranetModel.csdl|res://*/Models.IntranetModel.ssdl|res://*/Models.IntranetModel.msl;provider=System.Data.SqlClient;provider connection string="Data Source=192.168.1.43;Initial Catalog=Website.Models.IntranetApplication;User Id=[UserName];Password=[Password];MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
我不确定Entities字符串是否有任何相关性,因为我使用了Code First Entity Framework ,而且我认为该字符串仅在尝试创建edmx文件时出现(尽管我最终只是删除了它)。 Entities连接字符串已被注释掉,所以我认为它没有被使用。
我希望 Entity Framework 读取“WebsiteConnectionString”,但似乎要使用本地连接字符串,但我什至看不到设置位置。我该如何更改?
最佳答案
可以将连接字符串或其名称传递给DbContext
的构造函数。如果使用的是默认构造函数,则它将搜索与派生的上下文类的名称相同的名称的连接字符串,如果找不到,则使用以下字符串:
Data Source=.\SQLEXPRESS; Integrated Security=True; MultipleActiveResultSets=True
数据库名称与上下文类相同。