2016-03-25 20 views
1

LINQ to SQLでは、オブジェクトのコレクションを挿入するときに、InsertAllOnSubmitを使用する予定です。私が理解していないのは、InsertOnSubmitを使用するのではなく、InsertAllOnSubmit<T>を使用する必要があるときです。InsertAllOnSubmit <TSubEntity>いつ使用しますか?

ジェネリック型パラメータのいずれかとの相違点は何ですか? LINQ定義から

、次のように使用して

public void InsertAllOnSubmit<TSubEntity>(IEnumerable<TSubEntity> entities) 
    where TSubEntity : TEntity; 

:このようにそれを使用して対

db.SlickTableEntries.InsertAllOnSubmit<SlickTableEntry>(entries); 
db.SubmitChanges(); 

db.SlickTableEntries.InsertAllOnSubmit(entries); 
db.SubmitChanges(); 

エントリList<SlickTableEntry>です。

これを正しく使用するにはどうすればよいですか?どのバージョンが良いですか?

+0

リストに複数のエンティティが既に存在する場合は、 'InsertAllOnSubmit'を使う方が便利です –

答えて

1

これは、1回の呼び出しで複数のエンティティを挿入できる便利な方法です。これによりループがforeachに保存されます。データベースにアクセスする方法は変更されませんが、逆コンパイルされたコード(小さな効果)によるとCPUの効率は少し低下する可能性があります。

エンティティが継承関係にある場合に派生型を渡すことができるように、ジェネリック型パラメータが存在します。 C#の共分散サポートからはこれはもう必要ありません。

どちらの状況で使用する必要がありますか?

エンティティのリストがある場合は、リストバージョンを使用します。それ以外の場合は、単一項目バージョンを使用します。ジェネリック型の引数を指定しないでください。それは決して必要ではなく、コードを混乱させるだけです。

機能の違いはまったくありません。それがコンパイルされていれば動作します。型引数を省略すると、コンパイラはそれを適切に埋めます。

関連する問題