2012-02-29 62 views
1

我有一個寫得很差的遺留SQL Server數據庫,我需要對其進行編碼。不幸的是,還沒有更新的許多其他遺留應用程序仍在運行該數據庫。我想我會使用實體框架乾淨地編碼我的C#應用​​程序。實體框架數據庫首先爲一個寫得不好的數據庫

我有一張如下所示的表格。

矢量

  • VectorId(INT)PK
  • 名稱(VARCHAR)
  • 信息(VARCHAR)

不幸的是矢量。 信息是一系列逗號分隔值,我需要能夠乾淨地進行編輯。 Vector.Info中的條目示例可以是:150,-56,36,866(它們對應於特定順序中的X,Y,Z,T)。我知道這是一個糟糕的反模式什麼是使用實體框架來處理這個問題的最佳方式?

回答

1

EF不支持表值函數,在路上他們沒有組合的,所以你不能使用像

from c in Vectors 
    where fnInfo(c).Any(f=>f.X == 150) 
    select c 

查詢,你可以在這種情況下,要做的就是創建一個視圖VectorId, Name, Info, X, Y, Z, T,因爲它似乎分裂是固定的,它總是產生這些座標。

通過這種方式,您可以在其他EF套件上進一步使用此視圖。只要視圖在模型中設置了PrimaryKey,您就可以創建導航屬性。
你必須處理更新。當其中一個座標發生變化時,可能需要拆分字符串並用新座標重新組合。

+0

EF 5 Beta支持Db First方法中的表值函數。 http://blogs.msdn.com/b/adonet/archive/2012/02/29/ef4-3-1-and-ef5-beta-1-available-on-nuget.aspx – 2012-02-29 19:57:26

+0

附帶.Net框架4.5 – 2012-02-29 20:07:32

相關問題