小编Ber*_*ian的帖子

通过外键在模拟的EF6数据库中加载相关数据

最近,我启动了一个用于模拟各种神经网络应用程序的项目。为了处理涉及的大量数据,我已经使用实体框架模型优先方法实现了SQL-Server后端。
另外,我对测试驱动开发(TDD)学科也非常喜欢。但是,为了做到这一点,我需要一个模拟数据库来运行我的测试。经过大量搜索,我发现了商业和开源的多种解决方案。在这一点上,值得注意的是,我是数据库相关主题的新手。因此我选择使用MSDN在内存中模拟描述了EF6框架描述这里

Pff,现在我们有了背景知识,这是我的问题:

我已经创建了模型并从中生成了数据库。实际接口层的代码生成由edmx完成。为了进行单元测试,我遵循了上述教程,并修改了相关字段以匹配我的数据库模型。(可在http://i.imgur.com/julse1Y.png?1中找到它,很遗憾,我没有代表在帖子中包含该图片...)。
但是,我不需要每个测试仅包含一些子集的所有数据。我想要一种情况,我可以在测试的设置中指定要加载哪些表,或者加载依赖项的深度。

我遇到的问题是,在指定相关外键时,相关数据未与当前DBSet一起加载。例如,当为连接集设置数据时,我希望条目链接到相关数据,在这种情况下,是节点集的元素:

var context = new TestContext();

context.NodeSet.Add(new Node { NodeID = 1 });
context.NodeSet.Add(new Node { NodeID = 2 });

context.ConnectionSet.Add(new Connection { ConnID = 1, ToNodeID = 1, FromNodeID = 2 });

var conn = context.ConnectionSet.First();
var fromNode = conn.FromNode;
var toNode = conn.ToNode;
Run Code Online (Sandbox Code Playgroud)

在此示例中,指定的Connection的FromNode属性返回null。理想的情况是该模拟具有将ToNodeID密钥与相关对象相关联的能力。此外,我希望加载顺序与解决iaw的关键约束有关,以便解析相应节点必须存在的FromNode字段。

我乐于接受有关此特定问题的所有建议,但也欢迎你们中的任何人知道模拟EF6模型优先数据库设计的更富建设性的方法。

提前致谢!

c# database unit-testing entity-framework mocking

5
推荐指数
1
解决办法
1640
查看次数

标签 统计

c# ×1

database ×1

entity-framework ×1

mocking ×1

unit-testing ×1