テーブルAからすべてのフィールドを取得するLINQと、プロファイル1がテーブルABに値を持つフィールドを作成する助けを得ることができれば幸いです。プロファイル1にテーブルABにエントリがない場合は、値をnullとして表示します。LinqまたはSQLで次のように書くには
表プロファイルのために私が表示されます
AID Field
-----------
1 OneField
2 TwoField
3 ThreeField
表B
BID Value
-----------
1 OneValue
2 TwoValue
3 ThreeValue
表AB
ABID AID BID ProfileId
-------------------------
1 1 1 1
2 2 3 1
私はLINQの(またはSQLクエリ)を書き込むしようとしていますid 1、表aのすべての値、および適用される値は表bの値です。
ProfileID AID Field BID Value
--------------------------------------------------------
1 1 OneField 1 OneValue
1 2 TwoField 3 ThreeValue
1 3 ThreeField NULL NULL
プロファイル1が何を持っているそうでない場合は、目的は、テーブルAからのすべてのフィールドを取得することで、プロファイル1がテーブルABにエントリを持っているため、これらのフィールドは、テーブルBの値を表示し、見ないようにテーブルABのエントリは、次にヌルとして表示されます。
解決策が必要な場合は、SQLで記述し、ストアドプロシージャを使用して呼び出してください。これは動作するはず
おかげ
こんにちはRoberto。これをありがとう、それはユニットテストでかなり良い動作します。しかし、linq2sqlエンティティに対してDefaultIfEmptyは失敗します。なぜなら、空の場合はデフォルトで渡される値にfk constrainstがあり、例外 "System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException:操作がオブジェクトの現在の状態のため有効ではありません"が発生します。バマー。私は解決策を見つけたときに努力し続けます。ありがとう。 –
ねえ...だから近い。残念ながら私はLINQ to SQLを使用していないので、制限があるのか分かりません。残念ながら、DefaultIfEmptyに対してnullを返すと、返されたオブジェクトのプロパティにアクセスしようとしているため、残りのクエリは失敗します。 – 7wp
ありがとうRoberto。これは正しい方向に私を指摘している。私は努力し続けます。徹底的な答えとしてあなたのものをマークしてください。自己完結型の完全なテストを行うための+1。 –