如何在单独的线程中在实体框架中将某些内容保存到我的数据库中? 我想做的事情看起来像那样,但显然不会那样:
public class ThingsHandler : IHttpHandler
{
private DatabaseContext db = new DatabaseContext();
private void ProcessThing()
{
System.Threading.Tasks.Task.Factory.StartNew(() =>
{
Thing dbThing = db.Things.Where(...).AsEnumerable().LastOrDefault();
dbThing.some_property = true;
db.SaveChanges();
}
}
我希望,我能够说清楚,我希望实现的目标。但是我需要做什么?
答案 0 :(得分:0)
如果您希望继续执行任务,则应将上下文初始化放在任务中:
System.Threading.Tasks.Task.Factory.StartNew(() =>
{
var db = new DatabaseContext();
Thing dbThing = db.Things.Where(...).AsEnumerable().LastOrDefault();
dbThing.some_property = true;
db.SaveChanges();
}
但是如果你使用EF6,你可能想要使用异步方法:
private async void ProcessThing()
{
Thing dbThing = await db.Things.Where(...).AsEnumerable().LastOrDefaultAsync();
dbThing.some_property = true;
await db.SaveChangesAsync();
}