工作单元模式不允许我创建没有选项的数据库上下文

流氓

我正在使用ef core,并且尝试将存储库模式作为最佳实践的一部分来实施。但是我通常对上下文有点困惑,我会在和注入中创建上下文

HomeController(WarehouseDBContext _context)

我已经unitOfWork按照此处https://docs.microsoft.com/zh-CN/aspnet/mvc/overview/older-versions/getting-started-with-ef-5-using-mvc-4的文档的建议创建了我的班级/在asp-net-mvc应用程序中实现存储库和工作单元模式#创建工作单元类

但是我有点困惑。此处期望的选项通常在控制器上处理。

我的UnitOfWork

public class WarehouseUnitOfWork : IDisposable
{
    private WarehouseDBContext context = new WarehouseDBContext();
    private WarehouseRepository<StockItem> stockRepository;
 

    public WarehouseRepository<StockItem> StockRepoistry
    {
        get
        {

            if (this.stockRepository == null)
            {
                this.stockRepository = new WarehouseRepository<StockItem>(context);
            }
            return stockRepository;
        }
    }
    public void Save()
    {
        context.SaveChanges();
    }

    private bool disposed = false;

    protected virtual void Dispose(bool disposing)
    {
        if (!this.disposed)
        {
            if (disposing)
            {
                context.Dispose();
            }
        }
        this.disposed = true;
    }

    public void Dispose()
    {
        Dispose(true);
        GC.SuppressFinalize(this);
    }
}

但是这里有人抱怨它期望我会假定包含连接字符串的选项。我正在尝试将我的代码与EF分离,以便将来将来升级时变得更加容易。我的WareshouseDBContext描述如下

如您所见,它是期望选项。我应该在这里通过什么?

namespace WareHouseDal.Dal {
 public class WarehouseDBContext : IdentityDbContext<ApplicationUser> {
      public WarehouseDBContext(DbContextOptions<WarehouseDBContext> options)
        : base(options) {
        
    }

    public DbSet<WarehouseCrm> Warehouse { get; set; }
    public DbSet<Company> Companies { get; set; }
 }

}

当我在仅使用的单例模式之前创建上下文时

private readonly WarehouseDBContext _context;

我需要做的其他事情是让其接受工作单元级别上的上下文创建。

给出的错误是

在此处输入图片说明

人才框架

您不应该手动创建DbContext。为什么不在您的UOW类中注入DbContext?然后,DI将管理数据库上下文的生命周期。老实说,我不喜欢在已经实现UOW模式的EF周围添加UOW包装器。

我建议您同时看两个话题,它将永远改变您构建应用的方式:

https://www.youtube.com/watch?v=5OtUm1BLmG0&ab_channel=NDCConferences

https://www.youtube.com/watch?v=5kOzZz2vj2o&t=3s&ab_channel=NDC会议

关于EF核心详细信息的另一场精彩演讲:https : //www.youtube.com/watch?v=zySHbwl5IeU&ab_channel=NDCConferences

如果要坚持使用Repository模式,请使用一个清晰​​的示例检查Ardalis存储库:https : //github.com/ardalis/CleanArchitecture

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

工作单元模式不允许我创建没有选项的数据库上下文

来自分类Dev

在工作单元/存储库模式中处理上下文

来自分类Dev

闪亮的输入滑块错误“在没有活动的反应上下文的情况下,不允许进行操作”

来自分类Dev

运行 R Shiny 应用程序时出错:没有活动的反应性上下文不允许操作

来自分类Dev

具有通用数据库上下文的存储库模式

来自分类Dev

Rails控制台不允许我在数据库中创建记录

来自分类Dev

删除多个项目具有数据库的上下文操作模式

来自分类Dev

为什么我的数据库上下文被处置

来自分类Dev

每次不使用都会创建不同的数据库上下文是否有问题

来自分类Dev

在我的域模型中有数据库上下文是否可以

来自分类Dev

在我的域模型中有数据库上下文可以吗

来自分类Dev

为什么我在Ruby的YAML文件中得到'`parse':(<unknown>):在此上下文中不允许映射值'

来自分类Dev

为什么我在Ruby的YAML文件中得到'`parse':(<unknown>):在此上下文中不允许映射值'

来自分类Dev

具有自定义ListView的Android上下文操作栏不允许多项选择

来自分类Dev

DI +通用仓库+通用上下文+工作单元不起作用,为什么?

来自分类Dev

使用存储库模式时的多个数据库上下文

来自分类Dev

哪个是将存储库模式用于数据库上下文的最佳代码?

来自分类Dev

每次我在ASP.NET MVC中调用动作时都会创建数据库上下文

来自分类Dev

如何在数据库上下文中运行没有C#返回值的存储过程?

来自分类Dev

在ASP控制器内创建数据库上下文实例有意义吗?

来自分类Dev

从现有数据库和.sql文件创建上下文初始化器

来自分类Dev

我可以创建一个可以添加到数据库中的模拟数据库上下文,然后进行搜索吗?

来自分类Dev

SQL Sever Management Studio 2008不允许我备份数据库

来自分类Dev

有没有办法从我的任务在委托上创建的上下文中检索任何数据?

来自分类Dev

在此上下文中不允许使用表,视图或序列引用'SEQUENCE.NEXTVAL'

来自分类Dev

“存在YAML语法错误” ...“在此上下文中不允许使用映射值”

来自分类Dev

yaml文件问题“在此上下文中不允许使用映射值”

来自分类Dev

不允许在API上下文之外运行Revit Extenral应用程序

来自分类Dev

如何更正matlab错误:在此上下文中不允许使用函数定义

Related 相关文章

  1. 1

    工作单元模式不允许我创建没有选项的数据库上下文

  2. 2

    在工作单元/存储库模式中处理上下文

  3. 3

    闪亮的输入滑块错误“在没有活动的反应上下文的情况下,不允许进行操作”

  4. 4

    运行 R Shiny 应用程序时出错:没有活动的反应性上下文不允许操作

  5. 5

    具有通用数据库上下文的存储库模式

  6. 6

    Rails控制台不允许我在数据库中创建记录

  7. 7

    删除多个项目具有数据库的上下文操作模式

  8. 8

    为什么我的数据库上下文被处置

  9. 9

    每次不使用都会创建不同的数据库上下文是否有问题

  10. 10

    在我的域模型中有数据库上下文是否可以

  11. 11

    在我的域模型中有数据库上下文可以吗

  12. 12

    为什么我在Ruby的YAML文件中得到'`parse':(<unknown>):在此上下文中不允许映射值'

  13. 13

    为什么我在Ruby的YAML文件中得到'`parse':(<unknown>):在此上下文中不允许映射值'

  14. 14

    具有自定义ListView的Android上下文操作栏不允许多项选择

  15. 15

    DI +通用仓库+通用上下文+工作单元不起作用,为什么?

  16. 16

    使用存储库模式时的多个数据库上下文

  17. 17

    哪个是将存储库模式用于数据库上下文的最佳代码?

  18. 18

    每次我在ASP.NET MVC中调用动作时都会创建数据库上下文

  19. 19

    如何在数据库上下文中运行没有C#返回值的存储过程?

  20. 20

    在ASP控制器内创建数据库上下文实例有意义吗?

  21. 21

    从现有数据库和.sql文件创建上下文初始化器

  22. 22

    我可以创建一个可以添加到数据库中的模拟数据库上下文,然后进行搜索吗?

  23. 23

    SQL Sever Management Studio 2008不允许我备份数据库

  24. 24

    有没有办法从我的任务在委托上创建的上下文中检索任何数据?

  25. 25

    在此上下文中不允许使用表,视图或序列引用'SEQUENCE.NEXTVAL'

  26. 26

    “存在YAML语法错误” ...“在此上下文中不允许使用映射值”

  27. 27

    yaml文件问题“在此上下文中不允许使用映射值”

  28. 28

    不允许在API上下文之外运行Revit Extenral应用程序

  29. 29

    如何更正matlab错误:在此上下文中不允许使用函数定义

热门标签

归档