是否可以使用EF4.1访问有关POCO实体的元数据,该实体说明数据库字段名称是什么?最重要的是关于外键值。
我想在尝试将EF4.1应用于现有数据库模式时进行单元测试。我无法更改现有的列名。
目前,测试使用SQL Server Compact 4.0创建数据库,因此我可以看到字段的名称,但如果这是自动化的话会更好。
测试的伪代码
答案 0 :(得分:4)
那不是单元测试。那就是集成测试。而且这样的测试并没有太多用处。不要让EF创建数据库,而是使用现有数据库的副本。只需在新的上下文中保存实体和加载实体。如果数据还可以,您会对此感到满意。您可以对每个测试进行事务处理,以便在每次测试后回滚事务。
采用代码优先方法的EF 4.1不提供对元数据工作空间的访问。您可以尝试将DbContext
转换回ObjectContext
并尝试访问MetadataWorkspace
:
ObjectContext ctx = ((IObjectContextAdapter) context).ObjectContext;
MetadataWorkspace workspace = ctx.MetadataWorkspace;
在MetadataWorkspace
中搜索任何内容都是非常糟糕的经历。该类绝对不是设计用于自定义代码。