C# 如何在Enterprise Library 5.0中更改数据库
我创建了一个db对象作为C# 如何在Enterprise Library 5.0中更改数据库,c#,.net,asp.net,enterprise-library,enterprise,C#,.net,Asp.net,Enterprise Library,Enterprise,我创建了一个db对象作为 sqlDB = EnterpriseLibraryContainer.Current .GetInstance<Database>("ProdConn"); 要更改数据库,但我们如何在此处进行更改 请给我一些建议 谢谢, Mujeeb.我不认为ChangeDatabase是一种企业库方法(我在4.1版中也找不到)。我想这只是一个例子 我可以想出三种方法来满足您的需求: 在企业库配置中创建新的数据库条目并使用该值 使用ADO.NET更改连接并执行数据
sqlDB = EnterpriseLibraryContainer.Current
.GetInstance<Database>("ProdConn");
要更改数据库,但我们如何在此处进行更改
请给我一些建议
谢谢,
Mujeeb.我不认为
ChangeDatabase
是一种企业库方法(我在4.1版中也找不到)。我想这只是一个例子
我可以想出三种方法来满足您的需求:
数据库对象
public static class DatabaseExtensions
{
public static Database ChangeDatabase(this Database db, string databaseName)
{
// Change Database
DbConnectionStringBuilder builder = new DbConnectionStringBuilder()
{
ConnectionString = db.ConnectionString
};
builder["database"] = databaseName;
// Create new EL DB using new connection string
return new GenericDatabase(builder.ConnectionString,
db.DbProviderFactory);
}
}
//获取原始EL DB
Database db=EnterpriseLibraryContainer.Current.GetInstance(“MYDB”);
对象结果=db.ExecuteScalar(System.Data.CommandType.Text,
“从sysobjects中选择前1名”);
控制台写入线(结果);
db=db.ChangeDatabase(“另一个db”);
结果=db.ExecuteScalar(CommandType.Text,
“从角色中选择前1个角色名称”);
控制台写入线(结果);
谢谢Tuzo。。。“帮助”确实非常有用。@Mujji:另一个选项可能是在数据库对象前面加上数据库和架构名称。例如,SELECT*FROM[msdb].[dbo].[syscategories];从[master].[dbo].[spt_值]中选择*代码>。
// Get Original EL DB
Database db = EnterpriseLibraryContainer.Current.GetInstance<Database>("MYDB");
object result = db.ExecuteScalar(CommandType.Text,
"select top 1 name from sysobjects");
Console.WriteLine(result);
// Change DB with ADO.NET
using (IDbConnection conn = db.CreateConnection())
{
conn.Open();
conn.ChangeDatabase("AnotherDB");
using (IDbCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "select top 1 RoleName from Roles";
cmd.CommandType = CommandType.Text;
result = cmd.ExecuteScalar();
}
}
Console.WriteLine(result);
// Get Original EL DB
Database db = EnterpriseLibraryContainer.Current.GetInstance<Database>("MYDB");
object result = db.ExecuteScalar(System.Data.CommandType.Text,
"select top 1 name from sysobjects");
Console.WriteLine(result);
// Change Database
DbConnectionStringBuilder builder = new DbConnectionStringBuilder()
{
ConnectionString = db.ConnectionString
};
builder["database"] = "AnotherDB";
// Create new EL DB using new connection string
db = new GenericDatabase(builder.ConnectionString, db.DbProviderFactory);
result = db.ExecuteScalar(CommandType.Text,
"select top 1 RoleName from Roles");
Console.WriteLine(result);
public static class DatabaseExtensions
{
public static Database ChangeDatabase(this Database db, string databaseName)
{
// Change Database
DbConnectionStringBuilder builder = new DbConnectionStringBuilder()
{
ConnectionString = db.ConnectionString
};
builder["database"] = databaseName;
// Create new EL DB using new connection string
return new GenericDatabase(builder.ConnectionString,
db.DbProviderFactory);
}
}
// Get Original EL DB
Database db = EnterpriseLibraryContainer.Current.GetInstance<Database>("MYDB");
object result = db.ExecuteScalar(System.Data.CommandType.Text,
"select top 1 name from sysobjects");
Console.WriteLine(result);
db = db.ChangeDatabase("AnotherDB");
result = db.ExecuteScalar(CommandType.Text,
"select top 1 RoleName from Roles");
Console.WriteLine(result);