我正在开发一个DataBaseFirstEF应用程序,使用自动生成的代码和app.config部分时一切都很好,但是当我试图删除app.config的连接字符串并将其作为参数放在DbContext构造函数上时,我无法使其工作。
app. config中的连接字符串:
<add name="EntityContext"
connectionString="metadata=res://*/ModelHistory.csdl|res://*/ModelHistory.ssdl|res://*/ModelHistory.msl;provider=Oracle.ManagedDataAccess.Client;provider connection string="DATA SOURCE=XXXXX;PASSWORD=xxxxx;PERSIST SECURITY INFO=True;USER ID=XXXX""
providerName="System.Data.EntityClient" />
我尝试通过构造函数传递它:
public EntityContext() : base(GetConnectionString()) { }
private string GetConnectionString()
{
return metadata=res://*/ModelHistory.csdl|res://*/ModelHistory.ssdl|res://*/ModelHistory.msl;provider=Oracle.ManagedDataAccess.Client;provider connection string="DATA SOURCE=XXXXX;PASSWORD=xxxxx;PERSIST SECURITY INFO=True;USER ID=XXXX""
}
但它会抛出错误:
补充信息:如果在Code First模式下使用,则使用T4模板为Database First和Model First开发生成的代码可能无法正常工作。若要继续使用Database First或Model First,请确保在执行应用程序的配置文件中指定了Entity Framework连接字符串。若要使用这些从Database First或Model First生成的类,使用Code First使用属性或DbModelBuilder API添加任何其他配置,然后移除引发此异常的代码。
1条答案
按热度按时间nfs0ujit1#
我们需要将连接字符串从app.config文件移动到代码中。这可以在context.cs文件中完成。在构造函数中,您需要指定连接字符串。在连接字符串中,您需要将引号“替换为”(单引号)
注意:1)应该具有完整的连接字符串2)将引号“替换为'