我处于使用 EF6 学习 MVC5 的初级水平。基本上我正在尝试使用在 machine.config 中定义的连接字符串,而不是在创建 ADO.NET 实体数据模型时使用 web.config。我使用 machine.config 作为连接字符串的原因是;我们有不同的 SQL 集群服务器和应用程序服务器。在本地机器上,我们使用本地 SQL Server 实例,但在 beta/Live SQL Server 上,我们使用不同的实例名称。凭证也不同。因此,在每个应用程序/Web 服务器上,我们在 machine.config 中为相同的数据库名称但使用不同的凭据定义了 ConnectionString。
有没有一种方法可以在使用向导创建 ADO.Net 实体数据模型时使用 machine.config 中指定的 ConnectionString,或者我可以将 machine.config ConnectionString 的引用提供给我的应用程序 web.config,或者有没有其他方法可以解决这个问题问题?
我正在使用使用 MVC5 的数据库优先技术。在使用本地数据库创建 edmx 之后,我尝试了以下操作,然后尝试在我的上下文类中更改连接字符串:
public partial class MasterDataEntities : DbContext
{
public MasterDataEntities()
: base(string.Format("{0}", getConnectionString()))
{
}
public static string getConnectionString()
{
Configuration config = ConfigurationManager.OpenMachineConfiguration();
return config.ConnectionStrings.ConnectionStrings["masterdata"].ConnectionString;
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
}
错误:OnModelCreating 附加信息:如果在 Code First 模式下使用,使用 T4 模板生成的用于 Database First 和 Model First 开发的代码可能无法正常工作。要继续使用 Database First 或 Model First,请确保在执行应用程序的配置文件中指定了实体框架连接字符串。要使用从 Database First 或 Model First 生成的这些类,使用 Code First 添加使用属性或 DbModelBuilder API 的任何其他配置,然后删除引发此异常的代码。
亲切的问候