- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Entity Framework 启动一个新的 .NET MVC 项目,但我遇到了一些问题。
在我的模型中,我有大约 150 个实体(从数据库生成)。只有一个 DbContext 是个好主意吗?如果不是,我应该如何划分我的实体?
如果我有一个 DbContext 并且创建了一个类变量来实例化数据库上下文对象(在 Controller 中),那么这个 DbContext 会发生什么?它是否在内存中为我的每个实体创建单独的空间?就我而言,当我有 150 个实体时,它不会很有效。我错了吗?
我将在许多 Controller 中使用我的 DbContext。创建一个 MainController(我在其中创建新的 DbContext)是一个好主意吗?它将由其余 Controller 继承?因为这允许其他人访问相同的 Context。
处置 DbContext 的最佳实践是什么?我读到使用依赖注入(inject)是一种很好的做法。但这样我就必须将上下文注入(inject)到我的每个 Controller 中。现在哪种依赖注入(inject)方式最流行、最常用?
真的需要你的建议。这将使我对这一发展有更深入的了解。
最佳答案
拥有一个 DbContext
就可以了。如果您有很多实体,您只需要确保您需要的所有实体都存在于该上下文中。例如,如果您从数据库中检索 Person
及其相关的 Address
,则 Person
和 Address
必须存在于同一个 DbContext
中。
我还没有尝试使用多个 DbContext
实例,但需要注意的一件事是,如果您在多个上下文中包含同一个表,则最终可能会得到具有相似名称或可能发生冲突的类。例如,如果您在两个上下文中包含 Person
,则每个上下文都会尝试创建一个名为 Person
的类。
当您创建DbContext
时,它只会为您从数据库检索的数据创建对象。因此,如果您请求 Person
表中的一行,则只会创建一个 Person
对象。如果您请求 100 行,则将创建 100 个实例。
实际上有两个选择。第一,在每个操作中创建一个新实例,完成您的工作,然后保存它。或者,在构造函数中创建一个 DbContext
并在整个类中重用它。
这取决于您在第 3 点中选择的内容。如果将其传递到构造函数中,则实现 IDisposable 并在其中释放它。如果您在每个操作中创建一个新操作,请确保使用 using
语句处理它。
对于依赖注入(inject),有许多关于如何在 ASP.NET MVC 中执行此操作的选项、教程等。我个人使用 Autofac 和相关的 MVC 扩展,并将 DbContext
的新实例传递到每个 Controller 中。
关于asp.net-mvc - ASP.NET MVC - DbContext 良好实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29456103/
我已经开始研究使用 Identity 框架的现有 ASP.NET Core 项目。该应用程序使用单个数据库。出于某种原因,应用程序使用两个独立的数据库上下文 - 一个派生自 IdentityDbCon
我刚刚下载了EntityFramework.dll v4.3。我发现了许多比较 DbContext 与 ObjectContext 的问题。但其中大部分是 2010 年或 2011 年初的。 我想阅读
我想做什么 public void SomeTestMethod(){ var person = this.PersonManager.Get(new Guid("someguid"));
在我的应用程序中,我刚刚将 EntityFramework 更新到版本 6.0.2,现在我遇到了一些错误,这是我在更新我的应用程序之前没有发现的。 我有一个从 IdentityDbContext 类继
我正在处理一个大型项目,每个 DbContext 下有 50 多个 DbContext 和 100 多个 DbSet。 每个 DbContext 都由一个单独的团队处理,他们根据他们的要求/更改添加/
我是 WPF 的初学者。我想知道 dbcontext.Add 和 dbcontext.AddObject 之间有什么区别。 private void AddButton_Click(object se
我正在使用 MVC .Net。通常,每当我需要查询数据库时,我总是使用类似下面的方法来创建一个实例: using (EntitiesContext ctx = new EntitiesContext(
我在 HomeController 中有一个方法,我试图通过 URL 访问它,如下所示: http://localhost/web/home/GetSmth 第一次工作,但刷新页面后,我收到此错误:
在我的 Controller 中,我有这个 private readonly DbContext _context; public CountryController(DbContext contex
我正在寻找一种回滚实体更改的方法。我遇到了this answer它显示了如何设置实体状态,但我想知道如果我只是处理我的 dbContext 实例而不调用 dbContext.SaveChanges()
在我的项目中,我使用entity framework 7 和asp.net mvc 6\asp.net 5。我想为自己的模型创建 CRUD 我怎样才能做得更好: 使用 Controller 中的 db
我正在使用 Asp.Net Core 2.1 开发 Web 应用程序。在我使用脚手架添加新身份后,它为我生成了这些代码: IdentityStartup.cs 中生成的代码 [assembly:Hos
一旦我解决了one issue与 IBM.EntityFrameworkCore ,另一个出现了。对于 DB2 和他们的 .NET 团队来说,一切都是那么艰难和痛苦...... 问题:我在同一个 VS
我正在尝试创建一个播种用户和角色数据的类。 我的播种数据类(class)采用RoleManager构造函数参数 public class IdentityDataSeeder { private
我正在使用 .NET Core 2.1 构建 Web API。这将作为 Azure Web 应用程序托管。我想将数据库连接字符串保留在 Azure Key Vault 中。这是我放入 Startup.
当使用像 MySQL 这样的网络数据库时,DbContext 应该是短暂的,但是根据 https://www.entityframeworktutorial.net/EntityFramework4.
我有一个直接调用的 Controller 操作,但抛出了这个错误: The operation cannot be completed because the DbContext has been d
我在 Visual Studio 中使用默认的 ASP.Net MVC 模板。我正在使用在模板中为我创建的 ASP.Net 身份代码。我希望我使用的 DBContext 了解 ApplicationU
我有一个软件产品,它的数据库是在 SQLServer 上创建的,表名和列名是由开发团队定义的,然后使用 Database First 方法将模型导入 Visual Studio,现在我们正在为其他公司
我正在使用 EFCore 加载“用户”实体和用户制作的相关“订单”。 我有一个构造函数(来自真实代码的简化示例),它使用 id=1 加载用户并实现一个命令来更新 LoadedUser 实体中的更改。但
我是一名优秀的程序员,十分优秀!