我有3层应用程序的设计问题。通常我的数据库层只有这样一个类:
public class DA
{
string _connString = "";
public DA()
{
_connString = ConfigurationManager.ConnectionStrings["MyConnString"].ToString();
}
public DA(string connString)
{
_connString = connString;
}
private SqlConnection GetConnection()
{
...
}
public Employee GetEmployee(int idEmployee)
{
...
}
public Whatever GetWhatever(int idWhatever)
{
...
}
...
但是现在我有一个非常大的项目,我想将DA类分成更小的类,如DA_Employee,DA_Whatever等。
我想只实例化一次DA并访问其他类:
DA db = new DA(connString);
db.Employee.GetEmployee(12);
db.Whatever.GetWhatever(89);
db.Whatever.UpdateWhatever(89, "newname");
我不希望有这样的事情:
DA db = new DA(connString);
DA_Employee dbEmployee = new DA_Employee(connString);
DA_Whatever dbWhataver = new DA_Whatever(connString);
我想我可以在我的主构造函数中实例化我的所有类,并且有一些属性可以访问它们吗?
如何授予GetConnection()所有类的访问权限?
任何帮助和参考表示赞赏。 谢谢!
答案 0 :(得分:2)
是的,你使这些类成为DA的属性。
main()
将SqlConnection作为构造函数依赖项传递。
def foo():
sys.stdout = open('x.out', 'a')
sys.stderr = open('x.err', 'a')
try:
print("this goes to x.out.")
print("this goes to x.err.", file=sys.stderr)
raise ValueError('this must go to a.err.')
except:
traceback.print_exc()
raise # optional
及其用法
public interface IRepository<T>
{
T GetById(int id);
}
public class EmployeeRepository : IRepository<Employee>
{
private SqlConnection sqlConn;
public EmployeeRepository(SqlConnection sqlconn)
{
this.sqlConn = sqlConn;
}
public Employee GetById(int id)
{
return new Employee();
}
}