gpt4 book ai didi

c# - 你能从 DbSet 中获取 DbContext 吗?

转载 作者:IT王子 更新时间:2023-10-29 04:37:04 25 4
gpt4 key购买 nike

在我的应用程序中,有时需要在一次操作中将 10,000 或更多行保存到数据库中。我发现,一次简单地迭代和添加每一项可能会花费半小时以上的时间。

但是,如果我禁用 AutoDetectChangesEnabled,它需要大约 5 秒(这正是我想要的)

我正在尝试为 DbSet 创建一个名为“AddRange”的扩展方法,它将禁用 AutoDetectChangesEnabled,然后在完成后重新启用它。

public static void AddRange<TEntity>(this DbSet<TEntity> set, DbContext con, IEnumerable<TEntity> items) where TEntity : class
{
// Disable auto detect changes for speed
var detectChanges = con.Configuration.AutoDetectChangesEnabled;
try
{
con.Configuration.AutoDetectChangesEnabled = false;

foreach (var item in items)
{
set.Add(item);
}
}
finally
{
con.Configuration.AutoDetectChangesEnabled = detectChanges;
}
}

所以,我的问题是:有没有办法从 DbSet 中获取 DbContext?我不喜欢将它作为参数 - 感觉它应该是不必要的。

最佳答案

使用 Entity Framework Core(使用 2.1 版测试),您可以使用以下方法获取当前上下文

// DbSet<MyModel> myDbSet
var context = myDbSet.GetService<ICurrentDbContext>().Context;

How to get a DbContext from a DbSet in EntityFramework Core 2.0

关于c# - 你能从 DbSet 中获取 DbContext 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17710769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com