unit-testing - Entity Framework 4.1 RC POCO - 对生成的字段名称进行单元测试

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

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

我想访问它以进行单元测试,同时尝试将 EF4.1 应用于现有数据库架构。我无法更改现有的列名称。

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

测试的伪代码

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

最佳答案

这不是单元测试。那就是集成测试。而且这样的测试并没有太大用处。不要让 EF 创建数据库,而是使用现有数据库的副本。只需保存实体并在新上下文中加载实体即可。如果数据没问题,你会很满意。您可以将每个测试设为事务性的,以便在每次测试后回滚事务。

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

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

MetadataWorkspace 中搜索任何内容都是糟糕的体验。该类绝对不是为在自定义代码中使用而设计的。

关于unit-testing - Entity Framework 4.1 RC POCO - 对生成的字段名称进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5584158/

相关文章:

entity-framework - 在 Entity Framework 6 C# 中获取特定迁移的 SQL 文件

entity-framework - Entity Framework Code First 是否允许在单独的文件中进行流畅的映射?

entity-framework - 希望 Entity Framework 6.1 急切加载只加载第一级

sql - 更新 DB 时出错 : SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified

javascript - 使用 node.js、Mocha 和 mocha-jsdom 测试 Typescript 生成的类?

c# - 不强制转换返回类型的单元测试 IHttpActionResult

python - 在 python 单元测试中断言 `is`

java - Ploeh 的 AutoFixture for .Net 是否有 Java 替代品?

c# - 为什么使用存储库模式或者请向我解释一下?

c# - 如何将 Entity Framework 类属性标记为 'Obsolete'