2009-10-26 99 views
2

我們的產品部分使用Delphi和部分.NET構建,並且在我們遷移到.NET的當前狀態下,我們在Delphi組件中有數據字典,因此這是主數據庫。生成ADO.NET實體數據模型文件,從哪裏開始?

由此我們通過模板生成.NET源代碼,以支持簡單的查詢,但也要執行Linq2Sql,因爲我們的產品需要SQL Server。

但是,我想切換到.NET中的新實體模型,而不是Linq2Sql,但我不知道會有多少工作。我發現的所有教程或示例似乎圍繞着在設計器中對數據模型進行建模,或者從數據庫中獲取數據模型,都不適合我們的需求。

在Linq2Sql中,我們用TableMappingAttribute和ColumnMappingAttribute註釋了我們的查詢類,然後生成了DataContext的後代,這一切都很好。

是否有類似的簡單路徑來使用實體模型代碼?還是必須生成所有這些XML文件並運行工具來生成資源等?

有沒有人處於相同的情況,並可以對此有所瞭解?

+0

.NET 4是一個選項嗎? EF 4中有更多的模型生成選項。對於EF 1,您需要XML。 – 2009-10-26 14:22:12

+0

目前還沒有,沒有。我們明年可能會升級。 – 2009-10-26 23:40:39

回答

3

不幸的是,我認爲你確實需要XML文件。

實際上有3個文件組成EDM。 (雖然在視覺工作室它們都被合併爲1個EDMX文件)

  • SSDL - 存儲(描述數據庫)
  • CSDL - 概念(描述數據對象)
  • MSL - 映射(描述之間的映射存儲和概念)

從EDM文件時,EDM Generator可用於產生所有三個從數據庫連接,就在MS1和CSDL從SSDL,或者它可以生成從CSDL的實際數據對象。

不幸的是,這不是XML停止使用的地方。在運行時,實體框架仍然需要執行從對象到存儲器的轉換等。必須在Entity framework connection string中提供對3個EDM文件的引用。 (上building EF connection strings更多信息)

你也許可以想出辦法已經產生的數據對象的代碼(或自動與所需的各種屬性和額外的方法標記您現有的) - 像的Linq有像EdmEntityTypeAttribute和EdmScalarPropertyAttribute屬性放在類和屬性上,但沒有3個EDM文件,實體框架不會知道如何處理數據對象。生成器還將其他內容添加到數據對象類中,如屬性已更改的事件以及EntityObject的繼承。我不確定正確操作實體框架需要多少額外的東西,開發人員需要什麼。我會假設數據上下文需要屬性更改事件來跟蹤更改。

有一個關於EDM工具的article here以及用於生成/分割EDMX文件到其組件ssdl/csdl/msl文件的一些代碼。