Entity Framework 4.1 动态检索映射列名称

标签 entity metadata entity-framework-4.1

我正在尝试动态构建 SQL 语句。

我的上下文是动态创建的,使用从 EntityTypeConfiguration 派生的反射查找类并将它们添加到 DbModelBuilder.Configuration。

我的 EntityTypeConfiguration 类指定 HasColumnName 将实体属性名称映射到 db 表列名称,我需要它来构建我的 SQL 语句。

namespace MyDomain {
    public class TestEntityConfig : EntityTypeConfiguration<TestEntity>{
        Property("Name").HasColumnName("dbName");
    } 
 }

根据我的研究,我似乎可以通过 MetadataWorkspace 访问这些信息,而我可以通过 ObjectContext 访问这些信息。

我已经设法使用 MetadataWorkspace.GetItem("MyDomain.TestEntity",DataSpace.OSpace) 检索到我感兴趣的实体,这使我可以访问属性,但没有任何属性,属性,给我的名称映射的 db 列,如 HasColumnName 所指定。

我也不清楚 DataSpace.OSpace 是什么以及为什么我的模型是在这个空间中构建的。

如果有人能对此有所了解,我将不胜感激

更新

进一步@Ladislav 的评论。我发现我可以得到如下信息
对于类属性
ctx.MetadataWorkspace.GetItem<ClrEntityType>("MyDomain.TestEntity", DataSpace.OSpace)).Members

对于表属性
ctx.MetadataWorkspace.GetItem<EntityType>("CodeFirstDatabaseSchema.TestEntity",SSpace).Members

因此,鉴于我只知道 MyDomain.TestEntity 类型和 Memeber "Name"。我将如何获得“dbName”。我是否可以始终假设我的映射类将在 CodeFirstDatabaseSchema 中创建,以便动态构造身份以从 SSpace 检索它,以及我将如何获得 SSpace 中的正确成员。我可以做类似的事情吗
var memIndex = ctx.MetadataWorkspace.GetItem<ClrEntityType>("MyDomain.TestEntity", DataSpace.OSpace)).Members["Name"].Index;

var dbName = ctx.MetadataWorkspace.GetItem<EntityType>("CodeFirstDatabaseSchema.TestEntity",SSpace).Members[memIndex];

最佳答案

MetadataWorkspace包含 DataSpace 指定的几个容器.对你来说有趣的是:

  • CSpace - 概念模型的描述(应该包含属性)
  • CSSpace - 概念模型到存储模型的映射(这应该包含类/属性如何映射到表/列)
  • 关于Entity Framework 4.1 动态检索映射列名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6193979/

    相关文章:

    python - 无法使用Python从视频文件中获取正确的Exif数据

    asp.net-mvc - Entity Framework : There is already an open DataReader associated with this Command which must be closed first

    c++ - Box2D:断言失败且未加载 Wntdll.pdb

    android - 是否可以使用 Android Room 数据库创建 R*Tree 表?

    swift - 过滤到 NSFetchRequest

    java - java中有没有一种抽象的方法来获取实体的所有属性?

    c++ - 将自定义元数据添加到 jpeg 文件

    ios - 使用 iOS Evernote API 在 EDAMNote 中嵌入不可见元数据

    unit-testing - EF4.1 DbSet 与 EF4 ObjectContext 和单元测试

    asp.net-mvc - 在 EF CF 中添加/更新导航属性