【问题标题】:How can I map database table and field names back into their EF Entity object and property names?如何将数据库表和字段名称映射回它们的 EF 实体对象和属性名称?
【发布时间】:2011-01-02 00:13:04
【问题描述】:

我有一个数据库表,它记录了映射到 Entity Framework 实体的所有数据库表中的所有 字段更改(通过 SQL Server 触发器 )。

我正在构建一个服务,该服务输出这些字段更改给客户端。

但是,客户端需要EF-Entity 对象和属性名称,而不是数据库表和字段名称

例如,如果这些数据库字段发生变化:

Table         Field        WhenChanged
------------  ------------ ----------          ...
Calendar      Event        2010-01-05 15:00:00
Calendar      Place        2010-01-05 15:22:00

我需要报告这些实体属性发生了变化:

Entity        Property        WhenChanged
------------  ------------ ----------              ...
Appointment   EventName        2010-01-05 15:00:00
Appointment   Place            2010-01-05 15:00:00

有些名称相同,有些名称不同:ma​​pping 是在 .edmx 文件中定义的。

是否有任何我可以调用的 EF 方法或我可以使用的工具来执行这种向后的表名到对象名和字段名到属性名的转换,而无需实际实例化对象?

【问题讨论】:

标签: sql-server entity-framework mapping


【解决方案1】:

我会提前说我对实体框架了解不多。但是,根据其他 ORM 的经验,不确定您想要什么会起作用,因为您处理的是物理数据而不是映射本身。因此,根据您的示例,您可以解决问题的方法是拥有一个映射到您的日志文件的实体。然后,当您向下发送此日志文件时,让它包含一个查找(字典)或使用反射来确定什么去哪里,然后发送该更改。

如果您只是想进行名称切换,因为您只想提供一个正在运行的更改日志,您可以使用元数据表的概念,该表包含您的实体/属性映射到表/字段名称。然后您的 sql 可以加入该表并拉回关联的名称与数据库值。

如果您可以解析您的 .edmx 文件,则沿着关联/元数据路线的路线,您可以将其用作元存储,然后根据该查找覆盖来自数据库的传入值。

【讨论】:

    猜你喜欢
    • 2021-04-17
    • 1970-01-01
    • 2012-04-02
    • 1970-01-01
    • 2018-11-04
    • 1970-01-01
    • 2021-08-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多