Đây là thiết kế được đề xuất (rất đơn giản để minh họa không gian vấn đề) cho ứng dụng giao diện điều khiển C#. Các kết nối cơ sở dữ liệu thực hiện IDisposable và giải pháp này không cho phép các đối tượng kết nối cơ sở dữ liệu using
. Ai đó có thể đề xuất cấu trúc chính xác hơn cho ứng dụng bảng điều khiển? Đây là một vấn đề tôi cần phải giải quyết thường xuyên.Làm cách nào để cấu trúc ứng dụng giao diện điều khiển C# để sử dụng hiệu quả tài nguyên cơ sở dữ liệu IDisposable?
class Program
{
SQLiteConnection sourceConnection;
SQLiteConnection destinationConnection;
static void Main(string[] args)
{
Program shell = new Program();
// get connection strings from command line arguments
string sourceConnectionString = shell.getConnectionString(args);
string destinationConnectionString = shell.getConnectionString(args);
// call non-static methods that use
shell.setUpConnections(sourceConnectionString, destinationConnectionString);
shell.doDatabaseWork();
}
private void setUpConnections(string sourceConnectionString, string destinationConnectionString)
{
sourceConnection = new SQLiteConnection(sourceConnectionString);
destinationConnection = new SQLiteConnection(destinationConnectionString);
}
private void doDatabaseWork()
{
// use the connections here
}
}
Edit:
Một số người không thể tìm ra lý do tại sao tôi muốn họ như biến thành viên. Đây là trường hợp sử dụng của tôi (một chút psuedocoded) của những gì sẽ đi trong doDatabaseWork:
foreach (Row sourceRow in DBResultSet)
{
string sourceXml = sourceRow.Columns["MyColumnName"].Value;
string destinationXML = transformUsingXSLT(sourceXml);
writeToDestination(destinationXml);
}
Xem cách tôi muốn giữ các kết nối này mở trong vòng đời này?
RE: Chỉnh sửa. Tuy nhiên ... không có –