2

实际上,我正在寻找一些帮助来学习设计多个存储库的技巧,这些存储库将使用 EF 访问同一数据库。我已经看到每个存储库都有自己的私有 DBContext 的示例代码,但我对这个概念有困难。我对这个项目中的通用接口不感兴趣。

我想要多个接口,其中一个Identity基于(基于授权)和其他特定于作业的存储库,例如类别、项目等,在单个应用程序中继承的接口是可重用的,因此是多个DbContext实例。

在 SQL 中,您有可以提交或回滚事务的事务,那么在 EF 中,多个 repos 会访问相同的(实时)数据吗?也许一个更好的问题是当我想要一个应用程序继承许多特定于工作的存储库时应该如何设计我的 DAL。

jgauffin是什么意思, “确保你的存储库是 100% 完全抽象的”

这是什么意思?

这是我要弄清楚的一个简单示例。这种做法合理吗?

public class OneRepo: IRepository, IDisposable
{

private DbContext context = new DbContext();

// Methods and whatnot... 

}

然后第二个存储库也需要 OneRepo 的相同数据库连接,但我认为有单独的内存工作单元?

public class AnotherRepo: IRepository, IDisposable
{

private DbContext context = new DbContext();

// Methods and whatnot...     
}

如果我的问题写得不好,我深表歉意。我对实际发帖还比较陌生,我不确定我是否说清楚了。我已经决定我一般不喜欢通用存储库,并希望使用角色接口模式基于授权和/或用户任务创建存储库。任何帮助解释将不胜感激!

4

1 回答 1

6

您将数据上下文注入到您的存储库中

public class FirstRepo
{ 
   DbContext _ctx;

   public FirstRepo( DbContext ctx )
   { 
       this._ctx = ctx;
   }
}

public class AnotherRepo
{ 
   DbContext _ctx;

   public AnotherRepo( DbContext ctx )
   { 
       this._ctx = ctx;
   }
}

这样,您可以将相同的上下文传递给同一工作单元下的所有存储库。

于 2013-11-28T19:31:30.400 回答