0
|
Joelty · 技术社区 · 6 年前 |
![]() |
1
2
据我所知,没有这样的界面。即使有,实现这个接口也需要相当多的工作。
你要求的理由
实现类的所有功能是一项相当艰巨的工作
如果您想要一个快速而简单的方法来测试原始的几乎没有变化的代码,我会使用一个表示内存中数据库的nuget包,比如 Nuget Effort 这样,没有人,甚至实体框架,会知道您将使用一个假的数据库。
用法:
这样,您的原始代码就不会适合您的单元测试。使用它相当简单,特别是如果您熟悉实体框架的标准用法 但是,如果您认为可以信任实体框架,并且希望在不使用实体框架的情况下测试代码,则可以为数据库创建适配器。 好的一面是,如果将来决定不再使用实体框架,或者甚至不使用数据库,但使用其他存档方法,代码仍然可以工作。缺点:不能再使用实体框架的暗角。 其思想是创建一个归档接口和一个归档类。标准存档类有一个DbContext。
为测试创建特殊存档:
在某个地方,你必须告诉你的代码实例化你的假存档,而不是你的真实存档。这是使用工厂模式完成的:
这会导致代码发生一些变化:您将不得不要求ArchiveFactory创建一个MyDbContext,而不仅仅是调用新的MyDbContext。此外,每个想要使用新MyDbContext的类都需要有相同的ArchiveFactory。 然而,尽管这个解决方案看起来非常简洁,但它的实现却需要做很多工作,即使完成了这项工作,它仍然具有有限的功能,特别是如果您希望添加/删除项并希望使用表之间的关系。 数据库中表之间关系的每一次更改也将导致存档的更改。我想要一个像假数据库一样的工作,并使用原始的实体框架功能。 |
![]() |
Drago · Linq通过比较Id和具有Id的对象列表来查询获取列表 3 年前 |
![]() |
Niyazi Babayev · 如何在表达式中动态应用表达式? 3 年前 |
![]() |
Murat Güzel · EF存储库模式错误{'Id'}已被跟踪 3 年前 |
![]() |
dotnetdevcsharp · 减少基于数据类型获取设置的方法数量 3 年前 |
![]() |
saravanan049 · 在实体框架中回滚Azure SQL数据库 3 年前 |