複雑なタイプのエンティティをタイムリーに挿入するにはどうすればよいですか?ComplexTypeを持つエンティティのBulkInsert
は、次のことを考えてみましょう:
public class Entity {
public Address Address { get; set; }
}
[ComplexType]
public class Address {
[ColumnName("Street")]
public string Street { get; set; }
}
私は、ネストされたプロパティを無視SqlBulkToolsを試してみました。 .CustomColumnMapping(x => x.Address.Street, "Street")
と.AddColumn(x => x.Address.Street)
はどちらもクラッシュしませんでしたが、実際には何もしませんでした。
また、EntityFramework.BulkInsert-ef6
を試しましたが、これはComplexTypesで混乱してクラッシュします。
ValidateOnSaveEnabledとAutoDetectChangesEnabledをオフにしても、挿入を1つずつ行うのに非常に時間がかかります。新しいコンテキストを作成し、DbContext.SaveChanges()
の量で遊んでも役に立ちませんでした。
私の意見では、私はBulkInsertツールがEF6の周りに来るのが好きではありません。多くのサポートはありませんし、今後のバージョンのEFで動作することを保証するものはありません。 (そして、データコンポーネントはそのリスクを取り除くにはコアすぎる)。私がバルク物にしたいときはいつでも。私は古い格好のADO.NET SqlBulkCopyを使用しています。 – gsharp
.NetでSQLを実行する最も効率的な方法は、ADO.Netです。 **何もパフォーマンスのためにこれを打つことはありません。だからパフォーマンスを使用する場合は、ADO.Net SqlBulkCopy(前述のように) – Liam