instantiate a Data Access Layer once and have it exposed to all Classes
Hi
Background:
new to C#
using VSpro
using Windows Forms
Built Classes for BusinessLogic, DataAccess,Customers, Suppliers, Parts etc.
What I need to do :
1) separate the Data Access(Da) Layer and Business Logic(Bl) Layer from the UI
2) Have only 1 global instantiation of the BL object and the DA object
Wjat I did:
On the Business Logic Side I have done so with the Following:
On MainForm I have the the following that will give me one entry point to the Business Logic (BL)Object.
Instantiate the BusinessLogic (Bl) Class:
public partial class MainForm : Form
{
public static BusinessLogic Bl = new BusinessLogic();
public MainForm()
{
InitializeComponent();
}
I can address any Method in the BL Object using something like MainForm.Bl.SelectACustRecord(CustRec);.
This works fine for all of my forms.
PROBLEM:
I cannot think of a way to Instantiate the DataAccess Class once so I can address this class in all
of my other classes. "Customer.cs","Parts.cs" etc unless I instantiate the DA Object in each Class as in :
class Customer : Business
{
public DataAccess Da = new DataAccess();
double _creditLimit;
public Customer()
{
}
WHAT I HAVE DONE TO DATE:
1)In the BL class I instantiate the Da class - no go
2)Instantiate the Da in each Class this allows me to address DA but
When I fire "public DataAccess Da = new DataAccess(); " the DataAccess Constructor fires
and the SQL Connection opens.
as in :
public class DataAccess
{
private string connectionString;
private SqlConnection connection;
public DataAccess()
{
connectionString = "Data Source=Server;Initial Catalog=Server.MyDB_DB.dbo;Integrated Security=True";
connection = new SqlConnection(connectionString);
}
Hope this makes sense.
Any suggestion would be greatly appreciate
Thanks in advance
Allan