2016-12-13 4 views
0

私の質問がうまく説明されていない場合は申し訳ありません。 linqを使用する代わりに、sqlを使用して外部キーを使用して接続されたテーブルにアクセスすることが可能かどうか疑問に思っていました。 たぶん私は例を挙げます。同じ方法でlinq/entityと同じ方法で接続されたテーブルに到達する.ToList()、clean in Sql

私は、2つのテーブルCustomersTownsがあり、タウンテーブルからfkという制約があるとします。 は、今私はちょうど

using(DbContext db = new DbContext()){ 
    var customers = db.customers.ToList(); 

    //Then I can reach easy colums of towns just like that 
    List<string> lt = new List<string>(); 
    foreach(var item in customers){ 
     lt.add(item.customers.towns.nameofthetown.ToString()); 
    } 
} 

質問ことを行うことができ、同時に両方の事を取るためにLINQで、通常のSqlReaderでそれを行う方法、ありますか?それともそれだけであなたがここで[OK]をLINQ /エンティティ

で行うことができるものです今.. Customesが親表である場合を例のためのクラスが

public class Customers{ 
    public int ID{get;set;} 
    public string Name{get;set;} 
    pulic string Surname{ get;set} 
} 
public class Towns{ 
    public int ID{get;set;} 
    public string NameOfTheTown{get;set} 
    public int FkID{get;set;} 
} 

あり、町は子供です。 どのようにきれいなSQLの使用(マージ?)1、リスト内のこれらのテーブルの両方で - 私は、LINQ

と上記の例の中にいたどれだけのリスト、私はLINQ

+0

あなたはjoin ...を行うSQLクエリを書こうとしていますか?おそらくlinqを利用して通常のsqlに変換するアプリケーションや、必要なキーを知っていればSQLクエリを作成するアプリケーションを使用して見ることができます。 – MethodMan

+0

@MethodMan私はSqlReaderをすることができます私はそれを(または私はちょうど)2つの異なるテーブルを2つのリスト私たちのケースではリストであることを置くことができる、私はタウンから独自のテーブルに参加したインナーされているものを入れなければならないlinqのような1つのテーブルでそれを持っていると私はLinq /エンティティを使用せずに通常のSqlでそれを行うことが可能かどうかを知りたい場合 – Harugawa

+0

なぜ1つのSqlReader ..を使用して2つのテーブルを結合することはできません..?それはちょうどSQLクエリです。あなたは結合を書く方法に精通しています – MethodMan

答えて

0
var customers = db.customers.ToList(); 
を使用せずに、この item.customers.towns.nameofthetown.ToString()と同じ効果をしたいです

この行は

SELECT * FROM Customers 

foreach(var item in customers){ 
    lt.add(item.customers.towns.nameofthetown.ToString()); 
} 
で行われた、メモリに全顧客テーブルをロードします

このループを用いて行われ、各反復において、顧客のための関連する町の行をロード:

SELECT nameofthetown FROM town WHERE fkId = @customerId 

注:ループの反復ごとにデータベースをラウンドトリップする悪い性能です。

関連する問題