我有以下类:
public class EFRepository<TContext> : IDisposable where TContext : DbContext, IObjectContextAdapter, new()
{
private TContext context;
public EFRepository(string connectionStringName)
{
context = new TContext();
context.Database.Connection.ConnectionString =
ConfigurationManager.ConnectionStrings[connectionStringName].ConnectionString;
}
}
与以下连接字符串:
<connectionStrings>
<add name="EntitiesConnection" connectionString="metadata=res://*/EntityModel.csdl|res://*/EntityModel.ssdl|res://*/EntityModel.msl;provider=System.Data.SqlClient;provider connection string="data source=Bob-PC;initial catalog=Entities;integrated security=True;multipleactiveresultsets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
被这样调用:
var Entities = new EFRepository<EntitiesConnection>("EntitiesConnection");
在主题行抛出错误。我见过使用EntityStringBuilder的解决方案,但是Connection属性是只读的。关于如何使它工作有什么想法吗?
谢谢,鲍勃
DbContext
已经有一个接受连接字符串或名称的构造函数。您是否可以修改现有的上下文类以包含一个接受连接字符串参数并调用base(connectionStringOrName)
的构造函数?
所以上下文看起来像这样:
public class SomeContext : DbContext, IObjectContextAdapter
{
public SomeContext(string connectionStringOrName)
: base (connectionStringOrName)
{
}
// Rest of the implementation...
}
然后EFRepository<TContext>
的构造函数看起来像:
public EFRepository(string connectionStringName)
{
context = new TContext(connectionStringName);
}