1

私はこの問題を理解するのに苦労しています:

LINQtoEntitiesを使用して実装する必要があるT-SQLクエリは次のとおりです

select r.ReviewID, b.BusinessID, b.Name as BusinessName ,r.Description
from gb_business.Review r
inner join gb_business.Business b on r.BusinessID = b.BusinessID
inner join gb_listing.RegionalService rs on b.BusinessID = rs.BusinessID
where r.ReviewStatusID=1 and rs.TypeID=1 and rs.IsMain=1

VS2010では、次のようになります(where句なし)

var res1 = (from r in context.Review
            join b in context.Business on r.BusinessID equals b.BusinessID
            join rs in context.RegionalService on b.BusinessID equals rs.Business.BusinessID
            select r).ToList();

この式は正常にコンパイルされますが、実行時に例外があります。指定された型メンバー'BusinessID'は、LINQtoEntitiesではサポートされていません。初期化子、エンティティメンバー、およびエンティティナビゲーションプロパティのみがサポートされます。

なぜBusinessIDが問題になるのか疑問に思います。ありがとうございました。

4

2 に答える 2

4

あなたの質問への答えはそこにあります:質問:非エンティティメンバーフィールドでエンティティクエリへのlinqを作成できますか?

それらのLinQをエンティティクエリに使用する場合、データテーブル内で定義されているプロパティである「エンティティメンバー」のみを使用できます。

クエリはSQLコマンドにラップ(「変換」)されるため、データモデルで定義されているプロパティを使用する必要があります。

あなたの例では、「BusinessID」が既存のデータ列と一致することを確認することを強くお勧めします。

于 2012-11-21T15:06:22.180 に答える
0

BusinessIDがエンティティ メンバーとしてマークされていない可能性があります。

于 2012-04-11T19:33:14.047 に答える