2010-01-06 103 views
1

我有記錄所有領域的數據庫表的更改在其中(通過SQL服務器觸發)映射到實體框架實體所有數據庫表如何將數據庫表和字段名稱映射回其EF實體對象和屬性名稱?

我正在建立一個服務,其中輸出這些字段更改到客戶端。

但是,客戶端需要EF-實體對象和屬性名,而不是數據庫表名和字段名

例如,如果這些數據庫字段變化:

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方法我可以調用或工具我可以使用這將做這個落後的表名到對象名和字段名到屬性名翻譯,而不實際的實例化對象?

+0

這實質上是重複的。 Alex James有個很好的答案:http://stackoverflow.com/questions/1895455/get-database-table-name-from-entity-framework-metadata – 2010-01-06 14:07:19

回答

1

我會提前說,我不太瞭解實體框架。但是根據與其他ORM的經驗,您不知道您想要的是什麼,因爲您正在處理物理數據而不是映射本身。所以根據你的例子,你可以做什麼來解決你的問題是有一個映射到你的日誌文件的實體。然後,當你發送這個日誌文件時,它包含一個查找(字典)或者使用反射來確定哪裏發生了什麼,然後發送這個變化。

如果您只是想要執行名稱切換,因爲您只想提供正在運行的更改日誌,則可以使用包含實體/屬性映射到表/字段名稱的MetaData表的概念。然後你的sql可以加入到該表中,並將關聯的名稱與數據庫值進行比較。

如果您可以解析.edmx文件,則可以沿着關聯/元數據路由的路線行使您可能能夠使用它作爲元存儲,然後根據該查找覆蓋來自db的傳入值。

相關問題