2012-04-11 6 views
1

私は難しい。この問題を理解することが生じています:LINQツーエンティティ(指定したタイプのメンバーが「」エンティティにLINQではサポートされていません)

ここでは、私はエンティティへのLINQを使用して実装する必要がT-SQLクエリですVS2010で

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 

はそれが

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'は、LINQ to Entitiesではサポートされていません。初期化子、エンティティメンバー、エンティティナビゲーションプロパティのみがサポートされています。

なぜBusinessIDが問題なのでしょうか。ありがとうございました。

+2

「BusinessID」はどのデータ型ですか?また、2回目の参加は関連付けを介してリンクします。 ( 'rs.BusinessID'の代わりに' rs.Business.BusinessID'を私が期待していた通りです) – GalacticCowboy

+0

これは3つのテーブルすべてがintであるため、BusinessとRegionalServiceはBusinessIDを通じて1対多に接続されています。なぜそれがBusinessIDを好きではないのですか? linqツリーを掘り下げる方法とクエリがSQL構文に変換する方法はありますか?ありがとうございました。 – itisinteresting

+0

あなたはあなたの 'rs.Business.BusinessID'を修正しましたか? 'rs.BusinessID'でなければなりません。別のエンティティ( 'Business.BusinessID')のエンティティメンバーの' RegionalService'エンティティに参加することはできません。 – surfen

答えて

0

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

+0

それをエンティティメンバーとしてどのようにマークしますか? –

4

あなたの質問への答えはそこに与えられます。Question : Can I create a linq to entity query on non entity member fields

エンティティクエリにthosesきゅうを使用する場合は、あなただけのデータテーブル内で定義されている性質である「エンティティメンバー」を使用することができます。

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

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

関連する問題