实体框架4.1 RC POCO - 单元测试生成的字段名称的名称

时间:2011-04-07 16:11:14

标签: unit-testing entity-framework ef-code-first entity-framework-4.1

是否可以使用EF4.1访问有关POCO实体的元数据,该实体说明数据库字段名称是什么?最重要的是关于外键值。

我想在尝试将EF4.1应用于现有数据库模式时进行单元测试。我无法更改现有的列名。

目前,测试使用SQL Server Compact 4.0创建数据库,因此我可以看到字段的名称,但如果这是自动化的话会更好。

测试的伪代码

  • 创建实体
  • 保存实体
  • 检查字段名称是否符合预期

1 个答案:

答案 0 :(得分:4)

那不是单元测试。那就是集成测试。而且这样的测试并没有太多用处。不要让EF创建数据库,而是使用现有数据库的副本。只需在新的上下文中保存实体和加载实体。如果数据还可以,您会对此感到满意。您可以对每个测试进行事务处理,以便在每次测试后回滚事务。

采用代码优先方法的EF 4.1不提供对元数据工作空间的访问。您可以尝试将DbContext转换回ObjectContext并尝试访问MetadataWorkspace

ObjectContext ctx = ((IObjectContextAdapter) context).ObjectContext;
MetadataWorkspace workspace = ctx.MetadataWorkspace;

MetadataWorkspace中搜索任何内容都是非常糟糕的经历。该类绝对不是设计用于自定义代码。