如何将数据库表和字段名称映射回其EF Entity对象和属性名称?

时间:2010-01-06 10:47:34

标签: sql-server entity-framework mapping

我有一个数据库表,记录所有映射到实体框架实体的数据库表中的字段更改(通过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

有些名称相同,有些名称不相同:映射定义为 .edmx 文件。

是否有我可以调用的EF方法或我可以使用的工具可以执行此向后的tablename-to-objectname和fieldname-to-propertyname转换而不实际实例化对象?

1 个答案:

答案 0 :(得分:1)

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

如果您只是想要进行名称切换,只需要提供更改的运行日志,则可以使用包含实体/属性映射到表/字段名称的MetaData表的概念。然后你的sql可以加入到那个表中并将相关名称拉回到数据库值。

如果您可以解析.edmx文件,则可以使用它作为元存储,然后根据该查找覆盖数据库中的传入值。