2011-11-24 27 views
0

客戶ERP解決方案擁有(imho)一個非常難看的數據庫結構。它不會爲表格和列使用表達式名稱。對於地址例如表看起來是這樣的:如何爲OData-Feed的實體設計包裝?

C001_T001 
========= 
T001_ID 
T001_F001 
T001_F002 
T001_F003 
[...] 
  • T001_ID是主鍵
  • T001_F001店標題
  • T001_F002存儲姓氏
  • T001_F003存儲拳頭名
  • T001_F003存儲電子郵件地址
  • ...您獲得點

數據庫公開一個OData-Feed,我可以使用它來執行數據庫操作。

我的想法是,創造一種圍繞它的包裝。因此,查詢數據庫會更有表現力,更有趣,最終會提高效率。

// Not cool 
ctx.C001_T001s.Where(x => x.T001_F002 == "Smith" && x.T001_F003 == "John") 

// Cool! 
Addresses.Where(x => x.LastName == "Smith" && x.FirstName == "John") 

什麼是可能的方法來實現這一目標?

回答

1

SImlpe。我一直這麼做。

  • 我公開通過Odata手工製作的特定實體。
  • 我有一個數據管理器,我做的選擇(新entntiy {} - 我基本項目uinto新實體
  • 我做的其中proejction後

至少BlToolkit(我對這個ORM。所以我得到了高效的查詢和很好的預測

+0

這個項目看起來很有趣。我今天會試一試。 – Sandro

+0

Iti非常適合不需要完整ORM的場景 - 並且odata是一個(您不交互更新項目,因此不需要有狀態緩存)。 – TomTom

+0

由於某些[(已知的)限制],我最終從OData更改爲EF(http://msdn.microsoft.com/zh-cn/library/ee622463.aspx#unsupportedMethods)。 – Sandro

1

如果公開OData的服務是基於EF的,那麼這在EF中應該很簡單,在模型中,您可以重命名屬性和實體(與映射到的列和表相比較),然後OData將從EF中拾取名稱。

+0

我需要一個特殊的數據提供者嗎?當我使用嚮導創建EMDX時,我只能選擇SQL Server作爲數據源。 – Sandro

+0

然後,您可以編輯EDMX(理想情況下在VS中,或手動)以重命名屬性。 –

+0

我無法繼續嚮導,因爲我需要提供數據源。但是沒有選擇使用OData作爲數據源。 – Sandro