我想使用EntityFramework.BulkInsert实现此操作,我检查了文档,但我是EF的新手,我无法弄清楚这个上下文中的实体是什么。实体是什么?
foreach (string tag in tags)
{
TagUser tagUser = new TagUser()
{
//Initialize TagUser
};
applicationUser.TagUsers.Add(tagUser);
}
db.SaveChanges();
这是其文档中的示例代码:
using (var ctx = GetContext())
{
using (var transactionScope = new TransactionScope())
{
// some stuff in dbcontext
ctx.BulkInsert(entities);
ctx.SaveChanges();
transactionScope.Complete();
}
}
这是我的TagUserclass:
public class TagUser
{
[Required]
[Key, Column(Order = 0)]
[ForeignKey("Tag")]
public Guid TagId { get; set; }
[Required]
[Key, Column(Order = 1)]
[ForeignKey("ApplicationUser")]
public string Id { get; set; }
public virtual Tag Tag { get; set; }
public virtual ApplicationUser ApplicationUser { get; set; }
[Required]
public bool InEnglish { get; set; }
[Required]
public Int16 Priority { get; set; }
}
答案 0 :(得分:1)
在此上下文中,entities
将是您尝试插入的实体列表。因此,不是每次都说TagUsers.Add(taguser)
,而是可以获得要在List<TagUser> tagusers
中插入的TagUser列表(也许是这样,我没有亲自使用过BulkInsert),并说{{1} }
答案 1 :(得分:1)
实体是标签用户集合,在进行批量插入之前,首先提供FK ID。
using (var ctx = GetContext())
{
using (var transactionScope = new TransactionScope())
{
var entities= new List<TagUser>();
foreach (string tag in tags)
{
TagUser tagUser = new TagUser()
{
//Initialize TagUser
TagId = ..., // get something like tag.Id
Id = applicationUser.Id
};
entities.Add(tagUser);
}
ctx.BulkInsert(entities);
ctx.SaveChanges();
transactionScope.Complete();
}
}