为什么有多个 DbContext 类?

2024-06-28

当我使用 LINQ 和 .dbml 文件进行编程时,只有一个上下文。但是,当我创建一个 MVC 站点时,似乎每个实体都有单独的上下文(这是 MVC 教程向我展示的方式;使用“电影”上下文)。

I have:

public class AccountsContext : DbContext
{
    public AccountsContext()
        : base("DefaultConnection")
    {
    }

    public DbSet<Account> Accounts { get; set; }
}

我有:

public class ClientsContext : DbContext
{
    public ClientsContext()
        : base("DefaultConnection")
    {
    }

    public DbSet<Client> Clients { get; set; }
}

当我调用这些时,我必须创建单独的上下文,例如:

private AccountsContext db = new AccountsContext();
private ClientsContext clientsContext = new ClientsContext();

...这既令人烦恼,又显得多余,因为我知道当我使用 LINQ 时,我只需要实例化一个数据库对象。

有没有一种方法可以只使用一个上下文,这是推荐的吗?


不应该有任何事情阻止您使用一种上下文。数据库以及用于访问它的工具应该完全独立于数据库之外的任何内容(业务逻辑、服务层、UI 等)。

上下文的数量或使用它们的方式不应根据您的客户端技术而改变。

MVC 的哪一点让您相信您需要多个上下文?是什么阻止你这样做?

如果您认为需要为每个实体使用上下文,因为示例就是这样,那么您不需要。仅使用一种上下文。

如果有帮助的话,这就是具有多个实体的简单上下文的样子:

public partial class abook_dbEntities : DbContext
{
    public abook_dbEntities()
        : base("name=abook_dbEntities")
    {
    }

    public DbSet<Entity> Entities { get; set; }
    public DbSet<Contact> Contacts { get; set; }
}

如果有帮助的话,典型的业务流程如下所示:

UI -> 控制器 -> 业务逻辑 -> 数据访问 -> 数据库

您的数据上下文将进入您的数据层。您的逻辑将进入您的业务逻辑层。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么有多个 DbContext 类? 的相关文章

随机推荐

  • Bootstrap - navbar-fixed-top 覆盖内容

    我有一个关于 navbar fixed top 的问题 嗯 我有一个简单的问题 我的固定导航栏覆盖内容 例如在 关于我们 页面中 它覆盖带有 关于我们 标题的行 我不知道如何修复它 因为当我调整网站大小 移动设备大小 时 标题是可见的 当然
  • Flexbox 无法在 Safari 中工作,在 Web 检查器中被删除

    我在用着display flexbox对于包含多个正方形的 div 容器 使它们水平对齐 它在 Chrome 中工作正常 但在 Safari 8 0 中却不行 它被删除了 如下所示 grid overflow x hidden overfl
  • NSURLConnection didSendBodyData 进度

    我正在使用 POST 请求将一些数据上传到服务器 并且我正在尝试根据以下内容更新 UIProgressView 的进度totalBytesWritten的财产didSendBodyData的方法NSURLConnection 使用下面的代码
  • 将 YAML 文件作为常量加载到 Rails 控制器中是否有效?

    我有几个大型数组需要可用于特定视图 目前 我将它们存储在 YAML 文件中并加载到控制器常量中 如下所示 我假设当 Rails 在环境设置期间加载文件时 这个常量存储在内存中 但我偏执地想知道每次访问该控制器时是否都在访问文件系统 谁能建议
  • MySQL 将所有空格替换为 -

    我怎样才能删除一行中的所有空格 我在这里看到很多相同的问题 但所有答案都使用替换选项 替换只能去除一个空格 而不是全部 例如 a b c 变为 a b c Thanks 这可以通过以下 MySQL 函数来实现 SELECT REPLACE
  • 连接 Realm 和 SwiftBond 的最佳方式是什么

    I love Realm http realm io我爱Bond https github com SwiftBond Bond 两者都让应用程序创建成为一种乐趣 所以我想知道连接 Realm 和 Bond 的最佳方式是什么 在 Realm
  • 如何终止一个 Observable?

    我有一个 Observable 如果不满足某个条件 即某个网站的响应不成功 我想终止它 以便我可以重新查询该网站 并再次调用该 observable 我该如何去做呢 这就是我想做的 Observable create new Observa
  • Spring Batch - 将资源名称从 MultiResourceItemReader > FlatFileItemReader 传递到 StepExecutionListener

    我有一个 Spring Batch 工作需要执行以下操作 检查本地文件系统上可能包含多个文件的目录 处理每个文件 将这些文件中的数据保存到数据库中 通过添加后缀来重命名文件以包含 PROCESSED 或 ERROR 我用过下面的 A 多资源
  • 过滤器:AngularJS 中的 notarray 错误

    http plnkr co edit cJsScs8ixF1aq85Ri7nV p preview http plnkr co edit cJsScs8ixF1aq85Ri7nV p preview 过滤器不工作 代码的其他部分也被破坏 抛
  • 在 Ruby 中获取用户主目录的跨平台方法?

    Java有方便的System getProperty user home 以与平台无关的方式获取用户的 主 目录 Ruby 中的等价物是什么 我没有 Windows 盒子可供使用 而且我觉得依赖文件名中的波浪号并不是最干净的方法 还有其他选
  • Rails 4:Solr 抛出 JavaMissing 错误,但已安装 Java

    我重新启动了 Rails 4 VPS Solr 显然也关闭了 我现在正在尝试启动 Solr 但是当我运行以下命令时RAILS ENV production bundle exec rake sunspot solr start我收到以下错误
  • 更改 JAVA DNS 缓存设置

    我的网络应用程序使用 java8 我想更改 JAVA DNS 缓存的设置 这是代码 java security Security setProperty networkaddress cache ttl 60 java security S
  • FileOpenPicker PickSingleFileAsync 抛出 UnauthorizedAccessException

    以下代码几乎逐字来自 MSDN 示例 class FileOpenPicker picker new FileOpenPicker picker ViewMode PickerViewMode Thumbnail picker Sugges
  • 任务取消异常 (ThrowForNonSuccess)

    这是这个问题的延续 多任务延续 https stackoverflow com questions 21154692 task continuiation 我已经按照答案更改了代码 但是现在我收到了TaskCancelledExceptio
  • 从查询更新最后一个文档时遇到问题

    您好 我是 Mongodb 的新手 我目前正在尝试更新查询结果中的最后一个文档 但遇到问题 我知道如何使用获取最后一个文档 db collection find sort natural 1 limit 1 但我该如何更新呢 我尝试这样做
  • C++ 程序给出了太多参数警告

    我几乎不知道我在做什么 我有这段代码 我试图解决一些简单的数学问题 include
  • Symfony2 - 将当前登录的用户注入侦听器

    我正在尝试将当前登录的用户注入侦听器 我的目标是每次用户执行任何操作时 将当前的 DateTime 写入 demo user 表的 last active 列 这两个操作 this https stackoverflow com a 756
  • 推荐用于 Delphi 棋盘游戏的 2D Sprite 引擎? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 对于 Delphi 精灵引擎 我应该考虑哪些选择 我知道 GLScene 安道尔 2D 我还缺少什么吗 最好是依赖 OpenGL 仅 Di
  • IFrame 请求已取消

    这个例子以在 iframe 中加载 url 有效 http www w3schools com tags tryit asp filename tryhtml iframe 但是当我将 url 更改为类似的内容时http www yahoo
  • 为什么有多个 DbContext 类?

    当我使用 LINQ 和 dbml 文件进行编程时 只有一个上下文 但是 当我创建一个 MVC 站点时 似乎每个实体都有单独的上下文 这是 MVC 教程向我展示的方式 使用 电影 上下文 I have public class Account