问题标签 [dbset]

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 投票
1 回答
197 浏览

c# - 基于实体类型创建通用 DbSet

DbSets在 EF 代码中首先使用以下代码和平,我可以根据每个实体类型创建非泛型:

有什么方法可以将它们创建为 Generic DbSets?

0 投票
1 回答
260 浏览

c# - 如何检测更改 IDbSet

我正在创建一个模拟 IDbSet 以允许对实体框架类进行单元测试等。

但是我真的很难检测到变化,甚至根本不知道如何去做。到目前为止,这是我的课程...

这适用于添加、删除和检索实体。但是,当我尝试以下操作时:

MockReportContext 怎么知道它返回的报表对象已经改变了?我知道使用实体框架可以做到这一点,所以它一定是可能的,但我不知道如何......

0 投票
5 回答
18911 浏览

c# - NSubstitute DbSet / IQueryable

所以 EntityFramework 6 的可测试性比以前的版本要好得多。互联网上有一些像 Moq 这样的框架很好的例子,但情况是,我更喜欢使用 NSubstitute。我已经翻译了“非查询”示例以使用 NSubstitute,但我无法理解“查询测试”。

Moq 如何items.As<IQueryable<T>>().Setup(m => m.Provider).Returns(data.Provider);转换为 NSubstitute?我想类似的东西,((IQueryable<T>) items).Provider.Returns(data.Provider);但没有奏效。我也试过items.AsQueryable().Provider.Returns(data.Provider);,但也没有用。

我得到的例外是:

“System.NotImplementedException:成员 'IQueryable.Provider' 尚未在类型 'DbSet 1Proxy' which inherits from 'DbSet1' 上实现。'DbSet`1' 的测试替身必须提供所使用的方法和属性的实现。”

所以让我引用上面链接中的代码示例。此代码示例使用 Moq 模拟 DbContext 和 DbSet。

这就是我与 NSubstitute 的距离

所以问题是;如何替换 IQueryable 的属性(如 Provider)?

0 投票
1 回答
609 浏览

c# - 添加和删​​除操作在实体框架中不起作用

当出现问题时,我正在对应用于实体框架的存储库模式进行一些测试。我已经(通过代码优先)实现了一个虚构的酒店管理软件(称为 HotelManager)的核心层和数据层,我想将其用于测试目的,并且与一堆与 DB 相关的表。

这是结构:

  1. 核心层位于 HotelManager.Core 程序集中并包含:

    • 所有模型(使用“逆向工程代码优先”实用程序自动生成)
    • IRepostiory 接口(用于将存储库抽象为核心层)

    .

  2. 数据层位于 HotelManager.Data 程序集中并包含:

    • 所有模型映射(使用“逆向工程代码优先”实用程序自动生成)
    • 所有存储库实现
    • 上下文(使用“逆向工程代码优先”实用程序自动生成)
    • 包含所有存储库的工作单元

如您所见,数据层公开了一个工作单元类,客户端应用程序使用它来操作数据,但在这里我注意到了一个奇怪的行为。事实上,包含在我的 UoW 中的所有存储库都可以正确加载,但是添加和删除操作根本不起作用!

例如:

这种测试方法会失败!我不知道为什么,但即使在AddUser()调用方法之后(AddUser()实际上向Utenti存储库添加了一个新utente对象的实例),lastCount匹配到firstCount,就像什么都没发生一样,并且测试失败了!我什至无法在我的存储库管理的 DbSet 中找到我全新添加的实体!当我从存储库中删除一个实体时,我得到了相同的结果。什么都没发生。这只有在我在每个 Add() 或 Remove() 操作之后调用 SaveChanges() 方法时才有效,但这是不可能的,因为我需要有机会回滚数据并且因为我只想在某些情况下与 DB 交互,明确定义的案例,以尽可能少地减少数据库访问。

这是 EF 的正确行为,我完全误解了它的行为,还是我的项目有问题?我一直认为,如果我运行类似的东西UtentiDbSet.Add(new Utente() with {....});,EF 引擎会将我的新 Utente 对象以“已添加”状态添加到 DbSet(因此,UtentiDbS​​et.Count() == 1),然后,如果我调用 SaveChanges()我的上下文中,数据将被持久化到数据库中。

为了您的方便,我在这里上传了整个项目。

有一个名为HotelManager.Data.Test的测试项目。我不明白为什么AddWontWork()方法失败,而AddWithSaveChangesWillWork()工作。不要忘记在HotelManager.Data.Test项目的 app.config 中设置 connectionString(EF 将使用包含在数据层中的映射来构建整个 DB 结构)。

提前致谢。

0 投票
1 回答
127 浏览

c# - 使用 ID 集合查询 dbset - 如何使用 .Any()?

我有这个查询:

第二个查询不起作用,但我想做的是从 lnktblClaimStatusClaims 中获取与 qClaims 中的 ID 匹配的所有数据。ClaimID 在 qClaims 中是 PK,在 lnktblClaimStatusClaims 中是 FK。

有谁知道编写此查询的好方法?

0 投票
6 回答
43999 浏览

c# - 当我有实体时,在 DbContext 中动态查找指定的通用 DbSet

我有以下课程和DbContext

我也有一个想要添加到我的上下文中的对象列表,但我不知道如何DbSet根据每个实体类型动态地找到合适的泛型。

我怎样才能做到这一点?

0 投票
1 回答
160 浏览

android - 如何从 MVC Internet 应用程序获取 Android 应用程序中的 DbSet?

我正在开发一个 C# MVC4 互联网应用程序,并希望从该数据库中获取数据并在我的 Xamarin 应用程序中使用这些数据。

这是我的 MVC 上下文类:

这是我在 web.config 中使用的 MVC 连接字符串:

在我的 Xamarin 应用程序中,如何为 MVC 4 Context 类中的每个 DbSet 获取一个 DbSet?

这可能吗?我可以为此提供一些建议和/或帮助吗?

提前致谢

0 投票
1 回答
422 浏览

c# - 数据库集命名规则和类命名规则

我有一个像这样声明的 Dbset:

我的 Sql 表被称为James_Bobs

保存数据的类被调用James_BobRelation

这不起作用......在存储库中调用它时:

然而,当我将类名更改为 James_Bobs 时,它确实有效吗?

有什么规则?


此外,这完全让我感到困惑......我有一个名为的数据库表Sausages

DbSet 是这样的:

当我呼吁真正有效的香肠时!即使在这种情况下的类是香肠......实体框架是否会添加“s”,如果它认为可以吗?这让我很困惑

0 投票
1 回答
617 浏览

c# - 实体框架 DbSet 性能使用

有一个DbContex

我可以做这个:

我想以通用的方式做到这一点

两者之间有任何与实体框架相关的性能差异还是相同的东西?

0 投票
1 回答
5224 浏览

unit-testing - FakeItEasy DbSet / IQueryable- 实体框架 6

我想知道是否有人对 FakeItEasy的这篇文章有类似的示例(原始帖子在这里。我一直在尝试找到正确的设置,但无法正确设置。我在网上找不到任何示例。我开始教我自己进行了单元测试,我决定使用 FakeItEasy。到目前为止,我所有的项目都使用实体框架并且不使用 Repository/UOW 模式,因为我认为 DbSet 和 DbContext 对于我的小型应用程序来说已经足够好了。我知道有优点/缺点EF和单元测试,但我仍然想弄清楚这一点。我很确定我的尝试已经完成(见下文),因为我得到的错误是

System.NotImplementedException:成员“IQueryable.Provider”尚未在“DbSet 1Proxy' which inherits from 'DbSet1”类型上实现。'DbSet`1' 的测试替身必须提供所使用的方法和属性的实现。

任何方向都会非常有帮助。谢谢你。