私は以下のエンティティを持っているとします。 (簡潔にするために大きく簡素化されていますが、主要なプロパティが含まれています)
public class Crime
{
[Key]
public int CrimeId {get;set;}
public virtual ICollection<Victim> Victims {get;set;}
public virtual CrimeDetail Detail {get;set}
}
public class Victim
{
[Key]
public int VictimId {get;set;}
public string VictimCategory {get;set;}
}
public class CrimeDetail
{
[Key]
public int id {get;set;}
public string DetailText {get;set;}
}
SQL Server 2008 Express R2に挿入するこれらのレコードは600,000以上あり、Entity Framework 4.4を使用するにはかなりの時間がかかります。
理想的には、 SQLBulkCopy
を使用してこれらのレコードを一括して挿入したいのですが、それは複合型をサポートしていないためです。
必要に応じてモデルを変更することができます。
編集:このインスタンスのMSDNヘルプのAsDataReader拡張メソッドですか?
同じ問題が発生すると、EFでコードを生成したデータベースと、SQLBulkCopyで使用する生成されたデータセットを強く型付けすることになります。
(これらのクラスを実際にコード化したことはありませんが、xsdの1から10gbのxmlファイルの定義からxsdユーティリティを使用して生成されています。 。)
これらの600k +レコードをどのように取得するかに応じて、生成された強く型付けされたデータセットを使用するコードを変更するか、オブジェクトからオブジェクトへのマッパーを使用してEF POCOオブジェクトをデータセットにマップします。
厳密に型指定されたデータセットを生成するためのリンクがあります。
次に、SqlBulkInsertの使用例を示します。