2012-02-29 8 views
1

コード化する必要のある、あまり書かれていないレガシーSQL Serverデータベースがあります。残念ながら、まだ更新されていない他の多くのレガシーアプリケーションがこのデータベースに対して実行されています。 Entity Frameworkを使用してC#アプリケーションをきれいにコーディングすると思いました。エンティティフレームワークのデータベースが最初に作成されたデータベースに不適切です

次のような表があります。

ベクトル

  • VectorId(INT)PK
  • 名(VARCHAR)
  • 情報(VARCHAR)

残念ながら、ベクトル。 情報は、きれいに編集できるようにするために必要な一連のカンマ区切りの値です。 Vector.Infoのエントリの例は、150、-56,36,866(これらは特定の順序でX、Y、Z、Tに対応します)です。私はこれが不正な反パターンであることを知っています。これはEntity Frameworkを使ってこれを処理する最良の方法ですか?あなたは、この場合に行うことができますどのような

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

のようなクエリを使用することはできませんので

答えて

1

EFは、彼らが構成可能ではない方法で、テーブル値関数をサポートしていないのビューを作成することですVectorId, Name, Info, X, Y, Z, Tは、分割が固定されているように見えるため、常にこれらの座標を生成します。

この方法で、このビューを他のEFセットでさらに使用することができます。ビューにPrimaryKeyが設定されている限り、ナビゲーションプロパティを作成できます。
更新を処理する必要があります。座標の1つが変更されたときは、おそらく文字列を分割して新しい座標で再構成する必要があります。

+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 –

+0

に付属しています.Net Framework 4.5 –

関連する問題