如何及时插入具有ComplexType的许多实体?
请考虑以下事项:
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,逐个执行插入也需要很长时间。创建新的上下文并使用DbContext.SaveChanges()
的数量也无济于事。
答案 0 :(得分:0)
您可以使用实体框架扩展库轻松完成此操作。
只是一个例子:
//update all Entities with Street of MyStreet to Street of YourStreet
context.Entities
.Where(t => t.Address.Street == "MyStreet")
.Update(t => new Entity { t.Address.Street = "YourStreet" });
答案 1 :(得分:-2)
免责声明:我是该项目的所有者Entity Framework Extensions
此库允许批量插入(使用复杂类型),但也允许所有其他批量操作。
实施例
// Bulk Insert
context.BulkInsert(complexTypeEntities);
// Easy to use
context.BulkSaveChanges();
// Easy to customize
context.BulkSaveChanges(bulk => bulk.BatchSize = 100);
该库支持所有类型的继承和关联,但是库不是免费的。