是否可以使用 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/