如何更改Enterprise Library 5.0中的数据库
我创建了一个数据库对象,
sqlDB = EnterpriseLibraryContainer.Current
.GetInstance<Database>("ProdConn");
但后来在代码中,我想更改数据库名称。 在以前的企业版本中,我们经常
conn.ChangeDatabase("ABCD");
更改数据库,但是这里如何更改数据库呢?
请指教。
谢谢, 穆吉布。
I created a db object as
sqlDB = EnterpriseLibraryContainer.Current
.GetInstance<Database>("ProdConn");
But later in code, i want to change the Database name.
In previous enterprise version, we use
conn.ChangeDatabase("ABCD");
to change the database but how we can do it here?
Please advice.
thanks,
Mujeeb.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我不认为
ChangeDatabase
是一个企业库方法(我在 4.1 版本中也找不到它)。我认为这只是IDbConnection< 上的 ADO 方法< /代码>。
我可以想到 3 种方法来完成您想要的操作:
Database< /code> 使用不同数据库值的对象
1. 在配置中创建一个新的数据库条目
就个人而言,我认为这是最干净的选项。将数据库添加为配置中的新条目并将其视为单独的数据库。但是,如果您需要支持动态数据库,因为数据库名称在设计时未知或从不同的系统检索,那么这将不起作用。
2. 使用 ADO.NET
您可以检索连接并仅使用 ADO.NET(我认为这可能是您已经在做的事情?):
不过,将 EL 代码与 ADO.NET 代码混合感觉有点错误。
3. 创建新的 Enterprise Library 数据库对象
除了使用 ADO.NET,您还可以使用 Enterprise Library
Database
类。您无法修改ConnectionString
(它是readonly
),但您可以使用新的连接字符串创建新的Database
对象。我认为这看起来比选项 2 更好。我们可以通过将更改数据库逻辑添加到辅助方法或扩展方法(如下所示)来使其更简洁:
...
I don't think
ChangeDatabase
is an Enterprise Library method (I couldn't find it in version 4.1 either). I think it's just an ADO method onIDbConnection
.There are 3 ways I can think of to do what you want:
Database
object using a different database value1. Create a new Database Entry in Config
Personally, I think this is the cleanest option. Add the database as a new entry in configuration and treat it as a separate database. However, if you need to support dynamic databases because the database names are not known at design time or are retrieved from a different system then this won't work.
2. Use ADO.NET
You can retrieve a connection and just use ADO.NET (I think this may be what you were already doing?):
Mixing the EL code with the ADO.NET code feels a bit wrong, though.
3. Create a new Enterprise Library Database Object
Instead of using ADO.NET you can use the Enterprise Library
Database
class. You can't modify theConnectionString
(it'sreadonly
) but you can create a newDatabase
object with a new connection string.I think this looks better than option 2. We can make it a bit cleaner by adding the change database logic to a helper method or, as in the following, an extension method:
...