0

私はかなり見栄えが悪いが、変更不可能なデータベースで作業しています。

「位置」列を持つ「場所」というテーブルがあります。

この列には「A SHELF 5」のような値があります

これは「ケース A、シェルフ 5」を意味します。理想的な世界では、値がそれぞれ "A" と 5 の Case 列と Shelf 列があります。

私が疑問に思っているのは、エンティティクラスでいくつかの「仮想」(おそらく正しい言葉ではない)列を定義する方法があるかどうかです。そうすれば、それらの列が存在するかのようにテーブルをクエリできます( Selects、Where 句、Group By など)?

確かに、私は Linq にかなり慣れていないので、やりたいことを説明するのに適切な技術用語を使用していません。そのため、答えを見つけるのが難しくなります。したがって、誰かが私が始めるのに役立つ入門ドキュメントを教えてくれれば、それは有効な答えだと思います。

さらに複雑にするために、他のいくつかの列の値に応じて、列は上記のように構造化されているだけですが、そこには行きません。

これを読んでくれてありがとう。過去の経験から言うと、SOクルーは最高です!

4

2 に答える 2

0

私はLing-to-EntitiesではなくLing-to-Sqlに慣れていますが、これはうまくいくはずです

partial class Location
{
     public string Case 
     {
         get
         {
             int pos = Position.IndexOf(' ');
             if (pos == -1)
                 throw new Exception();
             return Position.Substring(pos);
         }
     }

}
于 2010-09-24T19:06:40.420 に答える
0

Entity Framework 内で列を他の複数の列に分割するために行うことは、クエリ内で SQL に変換されません。つまり、派生列でフィルタリングするものはすべて、他の where-clause 要素によってフィルタリングされていないすべての行を取得した後、クライアントでフィルタリングを実行します。これは大したことではないかもしれませんが、心に留めておく必要があることです。

計算された列自体を実行することは、部分的なコード ファイルで新しいプロパティを作成するという単純な問題です (James Curran の回答で示されているように)。オブジェクトは、クエリであっても、そのプロパティを問題なく使用する必要があります。

ただし、個人的には、あなたの状況では、データベース レベルでビューを作成することを考えています。Locations テーブルのビューは、問題のある列を別の 2 つの列に分割するようにセットアップできますが、大きな問題はなく、追加のオーバーヘッドが長期的に見返りをもたらす可能性があります。更新を監視する必要がありますが、ほとんどの場合、これは目的に役立ちます。

于 2010-09-24T20:42:23.693 に答える