gpt4 book ai didi

entity-framework - 在 DbContext 上使用抽象层

转载 作者:行者123 更新时间:2023-12-04 23:50:15 25 4
gpt4 key购买 nike

DbContextEF Code first工具Unit of WorkRepository模式为
MSDN网站说:

A DbContext instance represents a combination of the Unit Of Work and Repository patterns such that it can be used to query from a database and group together changes that will then be written back to the store as a unit. DbContext is conceptually similar to ObjectContext.



这是否意味着在 DbContext 上使用另一个 UoW 和 Repository 抽象(例如 IRepository 和 IUnitOfWor)是错误的?

换句话说,在 DbContext 上使用另一个抽象层是否会为我们的代码添加任何附加值?

技术独立 DAL 等值(我们的域将取决于 IRepository 和 IUnitofWork 而不是 DbContext)

最佳答案

考虑一下 - 您目前有两个强大的 ORM,每个都有其优缺点:

  • Entity Framework
  • NHibernate

  • 此外,还有更多的微型 ORM,例如:
  • 小巧玲珑
  • 海量
  • PetaPoco
  • ...

  • 更复杂的是,有非 SQL 数据库的客户端/驱动程序,例如:
  • MongoDb 的 C# 驱动程序
  • Redis 的 StackExchange 驱动程序
  • ...

  • 当然,始终必须考虑的另一件事是是否会有包括模拟数据访问层的测试。

    是否应该使用 UoW/Repository 模式的决定应该来自您的项目本身。

    如果您的项目是短期的,预算有限,并且除了 Entity Framework 和 SQL 之外您不太可能使用其他任何东西,那么引入 UoW/Repository 抽象层只会花费您额外的毫无意义的开发时间,您可以在其他东西或更早完成的项目并赚取了一些额外的现金。

    然而,如果项目是长期运行的并且涉及更复杂的开发生命周期,包括持续测试,那么 UoW/Repository 模式是必须的。随着现在使用的数据库数量和 NoSQL 运动在 .NET 生态系统中的大量涌入,一旦您决定向外扩展(即使用SQL,因此您的客户可能会突然要求您将所有内容移至 MongoDb)。由于现在双方不断变化,并且正在实现新的想法(例如组合图 + 文档数据库),没有人可以很好地说明从现在起 1 年后哪个数据库将是您项目的最佳选择。

    这个问题没有 bool 答案。

    这只是我的观点,它来自从事短期和长期项目的开发人员。

    关于entity-framework - 在 DbContext 上使用抽象层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24218750/

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