关于存储库模式构造器的困惑

时间:2018-07-20 14:20:52

标签: c# model-view-controller

我正在按照其存储库中互联网上的一个示例来实现存储库模式:

 private Northwind db = null;
 private DbSet<T> table = null;

 public Repository()
 {
     this.db = new Northwind();
     table = db.Set<T>();
 }

 public Repository(Northwind db)
 {
     this.db = db;
     table = db.Set<T>();
 }

为什么有两个构造函数?有什么区别?当我实例化它时,我有两个选择,但我不知道它到底能做什么

2 个答案:

答案 0 :(得分:1)

第一个构造函数实现一个默认的构造函数,它只是生成一个新的Northwind对象。

第二个构造函数将Northwind对象作为参数,并允许您将先前创建的Northwind对象传递给Repository构造函数。

如果您要这样做...

Northwind db = new Northwind();
Repository repo = new Repository(db);

这与呼叫...相同。

Repository repo = new Repository();

通常,在已经创建并填充了第二个构造函数,或者对创建的Northwind对象进行了某些操作之后(很难知道不知道Northwind的实现情况)。

答案 1 :(得分:0)

您可以在存储库中实例化一个新的上下文,您可以在一个控制器中创建多个存储库。