有没有办法从SQL表或查询生成对象初始值设定项?

时间:2015-10-15 23:31:07

标签: c# sql-server unit-testing mocking code-generation

给出像这样的表:

+----+------+
| ID | Name |
+----+------+
|  1 | Foo  |
|  2 | Bar  |
|  3 | Baz  |
+----+------+

我想像这样生成c#代码:

List<People> foo = new List<People> 
{
    new People{ID = 1, Name = "Foo" },
    new People{ID = 2, Name = "Bar" },
    new People{ID = 3, Name = "Baz" }
};

目的是使用数据库轻松创建大量数据,以便使用模拟对象进行单元测试。

为了澄清,我正在使用Entity Framework,我正在使用EntityFramework.TestingMoq来生成用于测试的模拟对象。

请注意,我不是试图从数据库中获取数据集合的实例,而是尝试生成初始化程序(如上所述),该初始化程序可用作单元测试的基础而无需连接到数据库。换句话说,您建议的任何工具/进程/代码的输出应该是表示对象或集合初始值设定项的c#代码。

2 个答案:

答案 0 :(得分:1)

看起来Object Exporter(来自此answer)对此有很长的路要走。它需要编写一次性代码来提取数据以“导出”它,但它离我正在寻找的解决方案并不太远。

答案 1 :(得分:0)

我正在使用entityframework为您描述:

var ListOfObjects = _YourContext.People.Where(q => q.id > 0).ToList();
ListOfObjects中的

是你在People表中插入的所有人,比如你在问题中提到的foo列表。

希望您使用过实体框架。