2009-08-03 16 views
3

私はLinq to Sqlを初めて使いましたが、達成したいのは、複数のフィールドを組み合わせたEntityクラスの単一の読み取り専用プロパティを作成することです。 title、forename、surnameを組み合わせた名前フィールドを作成します。LinqからSqlにフィールドを結合することはできますか

.designer.csファイルを変更することでその方法を見ることができますが、私はそれに触れないとわかっています。

私は動的データで複数の列ではなく1つの列を取得するようにしています。

+0

(コメントに返信) –

+0

余分な情報を追加していただきありがとうございます。[ScaffoldColumn(true)] ';私は次回のためにそれをファイルします;-p –

答えて

4

ここでのトリックはpartial classです。新しいは.csファイルを作成し、同じ名前空間でがあなたのタイプのためにという名前の新しいクラスを追加します。

namespace My.Data.Namespace { 
    partial class Employee { 
     public string Foo { 
      get {return Forename + " " + Surname; } // etc 
     } 
    } 
} 

こので元の(生成)クラスファイルを兼ね備えています。これは、生成されたエンティティ(データコンテキストを含む)に追加機能を追加するための一般的なアプローチです。 LINQ-to-SQLでは多くの部分メソッドが定義されて使用されているため、「部分メソッド」を参照することもできます。

1つの警告:あなたのDBMLは、MySystem.dbml呼び出された場合、その後は(おそらくあなたの部分クラス用)MySystem.csファイルを作成しないように。これを失敗させる原因となるコードジェネレータにバグがあります。他の名前を付けてください。構文が100%であれば

select new {FullName = x.FirstName + " " + x.Surname}; 

わからないが、アイデアをチェックアウト:あなたのLINQ select文で

+0

私はそれをしましたが、ダイナミックデータが構築されているグリッドに表示されないのを見ていない、何か他に何が必要ですか? – Nathan

+0

うーん...わからない。プロパティがあなたの*他のコードから利用可能な場合、動的データが(型のプロパティではなく)メタモデルを見ているのかどうか疑問です。どのような場合には、動作させるのは非常に難しいでしょう。また、単に動的データが読み取り/書き込みのプロパティを必要とすることもあります。わかりません。 –

+0

答えを見つけました。 [ScaffoldColumn(true)]属性を追加する必要がありましたが、今度はそれがグリッドに表示されます。美しい – Nathan

0

は、なぜあなたはのようなものを使用しないでください。

関連する問題