问题标签 [dbcontext]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 实体框架 - 如何使用自定义 DbContext 实现存储库?
我们开始在我们公司开发一个小框架,在不同的应用程序之间共享代码。对于数据访问,我们使用的是 EF4。我们有一个自定义 DbContext 类和一个通用存储库:
这里的问题是如何使用我们自定义的 DbContext 类 (RMDbContext) 来实现存储库。我的同事认为最好的方法是让 RMDbContext 实现 IRepository 接口:
老实说,我不喜欢这种方法,因为上下文与特定的合同(IRepository)相关联。IMO 最好创建一个使用 RMDbContext 的存储库实现,如下所示:
您如何看待这两种方法?你会选择哪一个,为什么?
c# - DbContext SaveChanges() - 检测更新的实体
我已经覆盖了 Entity Framework 4.1 DbContext 类中的 SaveChanges() 方法。
我的覆盖看起来像这样:
假设上下文中有 2 个实体,并且都标记为已修改 (EntityState.Modified)。其中之一已被修改并且与底层数据库行不同。另一个实际上与底层数据库行没有什么不同,它只是被标记为这样。
在调用 SaveChanges()之后,我如何判断这两个实体中的哪一个实际上更新了数据库中的一行,而哪一个根本没有真正修改?
c# - C# EF 4.1 在 DbContext 中动态创建表
我想在运行时将表添加到 SQLCe 数据库,因为表名不是静态的并且在编译时已知。我尝试使用 Entity Framework 4.1 和 DbContext 执行此操作,如下所示:
尝试运行它时会抛出此错误: 实体类型 Person 不是当前上下文模型的一部分。
是否可以在运行时将 DbSet 添加到 DbContext而无需在数据库中定义该 DbSet(及其模式)?
当使用 Person 静态定义 DbContext 时,EF 将动态创建整个数据库和表,这很棒。
例如:
这是否可以通过 EF 以某种方式实现,或者我是否必须使用其他技术来创建这些?
谢谢,于尔根
ado.net - 运行 ADO.NET DbContext Generator 后隐藏的实体类
我在我的 VB.NET 应用程序中使用了 DbContext 生成器,它生成的实体类(不是 .tt 文件)只有在我在解决方案资源管理器中选择“显示所有文件”选项时才可见。
为什么会发生这种情况?我注意到如果我创建 ac# 项目并执行相同操作,那么它们在 .tt 文件中是可见的。
asp.net-mvc - 更新实体框架上的两个相关模型和并发
在我的 ASP.NET MVC 应用程序上,我正在尝试更新两个相关模型,如下所示:
第一个通过没有问题,但是当它尝试更新第二个时,并发正在扭结并引发以下错误:
存储更新、插入或删除语句影响了意外数量的行 (0)。自加载实体后,实体可能已被修改或删除。刷新 ObjectStateManager 条目
实现我在这里尝试做的事情的方法是什么?
更新
这是_accommpropertyseasondetailrepo
Edit
方法:
这是_accommpropertyseasonrepo
Edit
方法:
更新 2
这是整个动作方法:
更新
残酷的真相:我在视图中忘记了以下代码行,因此模型在没有 PK 的情况下返回:
现在问题解决了!
asp.net-mvc-3 - MVC3/Razor 添加控制器“Get-PrimaryKey”找不到主键
我已经基于现有数据库创建了一个实体框架模型。实体框架正在使用 ADO.NET DbContext 生成器。
我还创建了一个使用第一个项目中的 DLL 的 MVC3/Razor 项目。当我单击选项“添加 -> 控制器”并填写必填字段时,我收到一个烦人的错误:
为了解决这个问题,我需要转到由 Visual Studio 生成的 Groups.cs 并添加“使用 System.ComponentModel.DataAnnotations;” 然后将 [Key] 添加到 Groups 字段的声明中。但是,这是生成的代码。如果我重新编译实体框架项目,我的更改当然会丢失。
所以 - 我的问题是:
我是否做错了什么导致 Visual Studio 无法弄清楚 Key 字段是什么,或者这只是脚手架代码的一个错误,它阻止它弄清楚 Key 是什么。
我应该提到,这只会在基于字符串的主键上失败。如果该字段已被声明为整数,则一切正常。
这是有问题的表:
这是我的环境:
c# - DbSet.FirstOrDefault()?
我正在尝试这样做,但它说我不能使用 FirstOrDefault,
错误是“ System.Data.Entity.DbSet”不包含“FirstOrDefault”的定义,并且找不到接受“System.Data.Entity.DbSet”类型的第一个参数的扩展方法“FirstOrDefault”(您是否缺少using 指令或程序集引用?)
然后我尝试了这种Cast
方法,但是给出了错误Cannot create a DbSet from a non-generic DbSet for objects of 'WindowStyle'(顺便说一句从下面WindowStyle
继承),DomainEntity
这里是课堂,
asp.net-mvc-3 - 我应该把 DbContext 放在哪里?
想知道如果我正在使用集成 3 层(业务逻辑、持久性、域)的 MVC 3 项目,我应该将 DbContext 实现放在哪一层项目中
它应该直接在 MVC 3 项目中吗?还是坚持?
谢谢。
entity-framework-4.1 - MvcScaffolding 创建未处置的可处置资源
将 MvcScaffolding 与 EF4.1 一起使用,我看到 Controller 的第一行生成的通常是以下字段定义:
其中BarContext
如下:
鉴于该System.Data.Entity.DbContext
实现IDisposable
,我很惊讶没有为可能负责处理FooController
的方法找到任何生成的覆盖。Dispose(bool)
context
这是模板中的疏忽,还是我遗漏了什么使这成为非问题?
c# - 从 DbContext Set() 中过滤掉软删除
如何过滤IsSoftDeleted
掉这个 DbSet 中的项目?
方法
模型
编辑:忘记显示Whatever
源自BaseEntity