问题标签 [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.

0 投票
4 回答
12803 浏览

c# - 实体框架 - 如何使用自定义 DbContext 实现存储库?

我们开始在我们公司开发一个小框架,在不同的应用程序之间共享代码。对于数据访问,我们使用的是 EF4。我们有一个自定义 DbContext 类和一个通用存储库:

这里的问题是如何使用我们自定义的 DbContext 类 (RMDbContext) 来实现存储库。我的同事认为最好的方法是让 RMDbContext 实现 IRepository 接口:

老实说,我不喜欢这种方法,因为上下文与特定的合同(IRepository)相关联。IMO 最好创建一个使用 RMDbContext 的存储库实现,如下所示:

您如何看待这两种方法?你会选择哪一个,为什么?

0 投票
1 回答
11987 浏览

c# - DbContext SaveChanges() - 检测更新的实体

我已经覆盖了 Entity Framework 4.1 DbContext 类中的 SaveChanges() 方法。

我的覆盖看起来像这样:

假设上下文中有 2 个实体,并且都标记为已修改 (EntityState.Modified)。其中之一已被修改并且与底层数据库行不同。另一个实际上与底层数据库行没有什么不同,它只是被标记为这样。

在调用 SaveChanges()之后,我如何判断这两个实体中的哪一个实际上更新了数据库中的一行,而哪一个根本没有真正修改?

0 投票
4 回答
15396 浏览

c# - C# EF 4.1 在 DbContext 中动态创建表

我想在运行时将表添加到 SQLCe 数据库,因为表名不是静态的并且在编译时已知。我尝试使用 Entity Framework 4.1 和 DbContext 执行此操作,如下所示:

尝试运行它时会抛出此错误: 实体类型 Person 不是当前上下文模型的一部分

是否可以在运行时将 DbSet 添加到 DbContext而无需在数据库中定义该 DbSet(及其模式)?

当使用 Person 静态定义 DbContext 时,EF 将动态创建整个数据库和表,这很棒。

例如:

这是否可以通过 EF 以某种方式实现,或者我是否必须使用其他技术来创建这些?

谢谢,于尔根

0 投票
0 回答
224 浏览

ado.net - 运行 ADO.NET DbContext Generator 后隐藏的实体类

我在我的 VB.NET 应用程序中使用了 DbContext 生成器,它生成的实体类(不是 .tt 文件)只有在我在解决方案资源管理器中选择“显示所有文件”选项时才可见。

为什么会发生这种情况?我注意到如果我创建 ac# 项目并执行相同操作,那么它们在 .tt 文件中是可见的。

0 投票
2 回答
329 浏览

asp.net-mvc - 更新实体框架上的两个相关模型和并发

在我的 ASP.NET MVC 应用程序上,我正在尝试更新两个相关模型,如下所示:

第一个通过没有问题,但是当它尝试更新第二个时,并发正在扭结并引发以下错误:

存储更新、插入或删除语句影响了意外数量的行 (0)。自加载实体后,实体可能已被修改或删除。刷新 ObjectStateManager 条目

实现我在这里尝试做的事情的方法是什么?

更新

这是_accommpropertyseasondetailrepo Edit方法:

这是_accommpropertyseasonrepo Edit方法:

更新 2

这是整个动作方法:

更新

残酷的真相:我在视图中忘记了以下代码行,因此模型在没有 PK 的情况下返回:

现在问题解决了!

0 投票
2 回答
1575 浏览

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 是什么。

我应该提到,这只会在基于字符串的主键上失败。如果该字段已被声明为整数,则一切正常。

这是有问题的表:

这是我的环境:

  • 视觉工作室 2010
  • 实体框架 4.1
  • MVC 3
  • 带有 SP3 的 SQL Server 2008
  • 0 投票
    6 回答
    19771 浏览

    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

    这里是课堂,

    0 投票
    1 回答
    492 浏览

    asp.net-mvc-3 - 我应该把 DbContext 放在哪里?

    想知道如果我正在使用集成 3 层(业务逻辑、持久性、域)的 MVC 3 项目,我应该将 DbContext 实现放在哪一层项目中

    它应该直接在 MVC 3 项目中吗?还是坚持?

    谢谢。

    0 投票
    1 回答
    221 浏览

    entity-framework-4.1 - MvcScaffolding 创建未处置的可处置资源

    将 MvcScaffolding 与 EF4.1 一起使用,我看到 Controller 的第一行生成的通常是以下字段定义:

    其中BarContext如下:

    鉴于该System.Data.Entity.DbContext实现IDisposable,我很惊讶没有为可能负责处理FooController的方法找到任何生成的覆盖。Dispose(bool)context

    这是模板中的疏忽,还是我遗漏了什么使这成为非问题?

    0 投票
    2 回答
    1039 浏览

    c# - 从 DbContext Set() 中过滤掉软删除

    如何过滤IsSoftDeleted掉这个 DbSet 中的项目?

    方法

    模型

    编辑:忘记显示Whatever源自BaseEntity