2017-04-24 3 views
2

すべてのデータベースのための選択である:きゅうSQLへと私はこのようなソースコード持って

var res = from s in Splitting 
      join c in Customer on s.CustomerId equals c.Id 
     where c.Id == customrId 
      && c.CompanyId == companyId 
     select s; 

コードを見直し、あるメンバーが自分のコードのみを1つのSQL DBに適用されると述べたが、とに私を助言しましたすべてのデータベースで動作するようにLinQ to Entity with Joinを使用してください。

私は、他のデータベースであっても、Entity Frameworkに追加することはできません。そして、以下のコードも正しく動作しますよね?

お知らせください。

+0

このクエリはメモリ上で実行されていますか?あなたの同僚は 'Splitting'と' Customer'を 'queryContext.Splitting' /' queryContext.Customer'に置き換えて話していますか? – dasblinkenlight

+0

上記のようにクエリを使用することによって、Oracle、mySQLなどの他のデータベースにdbを変更したときにdbが使用されないということを意味していました... –

答えて

2

LINQを書くには2通りの方法があります。

1. LINQ Query Expressions (query-syntax)(あなたが行っているもの)

var res = from s in Splitting 
      join c in Customer on s.CustomerId equals c.Id 
     where c.Id == customrId 
      && c.CompanyId == companyId 
     select s; 

2.Anotherが参加するためにLINQ query extension methods (dot-syntax)

var res = Splitting.Join(Customer, 
       sp => sp.CustomerId, 
       cu => cu.Id, 
       (sp, cu) => new { sp, cu }) 
      .Where(s => s.cu.Id == customrId && s.cu.CompanyId == companId) 
      .Select(s => s.sp); 

ですが、私は強くクエリ構文 .Thereを好むその詳細です query-syntax改良を加えて価値のあるものにすることができる隠蔽しかし、クエリ構文は幾分 ドットシンタックスより制限されています。

ドット構文は、より簡潔であるが、複数のテーブルを行うことがされている加入nightmare.Theフリップ側のみドット構文内に存在することLINQ 操作の数が存在することである:シングル()、 First()、Count()など。クエリ構文のこれらの制限に対して、 ドット構文を使用できます。

N.B:コンパイル時に、すべてが標準クエリに変換されます。

+0

こんにちは、Ashiquzzaman、 LinQのドット構文では、 Oracleデータベース、それも正しく、正しく動作しますか? –

+0

Ashiquzzaman、エンティティ(.edmx)の作成に取り組んでいるからです。実際に実行すると、Entity Frameworkはどのデータベースに依存するかを選択するために解析します。 このご迷惑をおかけして申し訳ありませんが、私はEFの仕組みを知りたいので頼んでいます。ありがとう。 –

+0

申し訳ありませんが、私はあなたが何を求めているのか理解できません。 – Ashiquzzaman

関連する問題