public partial class ProcessContext : DbContext { static ProcessContext() { Database.SetInitializer<ProcessContext>(null); } public ProcessContext() : base("Name=ProcessCS") //Comes from Config File { } --DBSets protected override void OnModelCreating(DbModelBuilder modelBuilder) { --Code } }
这是一个多用户数据库,我们有3个不同的数据库。集中DB位于公共位置,不会更改。这是DB存储的其他细节。我需要创建连接字符串@运行时,其细节将来自此集中式数据库。有人可以让我知道怎么去吗?
我尝试使用以下代码,但它不工作。这个方法将在这里调用
public ProcessContext() : base(nameOrConnectionString: ConnectionString()) { } private static string ConnectionString() { SqlConnectionStringBuilder sqlBuilder = new SqlConnectionStringBuilder(); sqlBuilder.DataSource = "XXX"; sqlBuilder.InitialCatalog = "YYY"; sqlBuilder.PersistSecurityInfo = true; sqlBuilder.IntegratedSecurity = true; sqlBuilder.MultipleActiveResultSets = true; EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder(); entityBuilder.ProviderConnectionString = sqlBuilder.ToString(); entityBuilder.Metadata = "res://*/"; entityBuilder.Provider = "System.Data.SqlClient"; return entityBuilder.ToString(); }
解决方法
对于SQL Server连接,覆盖实体容器类:(在EF6中工作,SQL Server 2012 express,VS2013)
public partial class PxxxxEntities { private PxxxxEntities(string connectionString) : base(connectionString) { } public static PxxxxEntities ConnectToSqlServer(string host,string catalog,string user,string pass,bool winAuth) { SqlConnectionStringBuilder sqlBuilder = new SqlConnectionStringBuilder { DataSource = host,InitialCatalog = catalog,PersistSecurityInfo = true,IntegratedSecurity = winAuth,MultipleActiveResultSets = true,UserID = user,Password = pass,}; // assumes a connectionString name in .config of MyDbEntities var entityConnectionStringBuilder = new EntityConnectionStringBuilder { Provider = "System.Data.SqlClient",ProviderConnectionString = sqlBuilder.ConnectionString,Metadata = "res://*/DbModel.csdl|res://*/DbModel.ssdl|res://*/DbModel.msl",}; return new PxxxxEntities(entityConnectionStringBuilder.ConnectionString); } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。