gpt4 book ai didi

c# - 如何使用 EF 设计访问相同实时数据的多个存储库?

转载 作者:行者123 更新时间:2023-12-02 08:13:42 28 4
gpt4 key购买 nike

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

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

在 SQL 中,您有可以提交或回滚事务的事务,因此在 EF 中,多个存储库会访问相同的(实时)数据吗?也许更好的问题是,当我希望单个应用程序继承许多特定于作业的存储库时,我应该如何设计 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...
}

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

最佳答案

将数据上下文注入(inject)到存储库中

public class FirstRepo
{
DbContext _ctx;

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

public class AnotherRepo
{
DbContext _ctx;

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

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

关于c# - 如何使用 EF 设计访问相同实时数据的多个存储库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20273146/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com