相关疑难解决方法(0)

与ObjectContext相比,为什么在EF 4.1中插入实体的速度如此之慢?

基本上,我在一个事务中插入35000个对象:

using(var uow = new MyContext()){
  for(int i = 1; i < 35000; i++) {
     var o = new MyObject()...;
     uow.MySet.Add(o);
  }
  uow.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)

这需要永远!如果我使用底层ObjectContext(通过使用IObjectAdapter),它仍然很慢但需要大约20秒.它似乎DbSet<>正在进行一些线性搜索,这需要花费大量时间......

其他人看到这个问题?

c# entity-framework entity-framework-4.1

79
推荐指数
3
解决办法
3万
查看次数

如何使用 AutoDetectChangesEnabled = false 在实体框架中更新多对多

请帮我处理这种情况:

我故意关掉AutoDetectChangesEnabled,我也故意加载我的实体AsNoTracked()

在这种情况下我无法更新多对多关系:

这是更新方法的代码:

public void Update(User user)
{
  var userRoleIds = user.Roles.Select(x => x.Id);
  var updated = _users.Find(user.Id);

  if (updated == null)
  {
    throw new InvalidOperationException("Can't update user that doesn't exists in database");
  }

  updated.Name = user.Name;
  updated.LastName = user.LastName;
  updated.Login = user.Login;
  updated.Password = user.Password;
  updated.State = user.State;

  var newRoles = _roles.Where(r => userRoleIds.Contains(r.Id)).ToList();
  updated.Roles.Clear();
  foreach (var newRole in newRoles)
  {
    updated.Roles.Add(newRole);
  }

  _context.Entry(updated).State = EntityState.Modified;            
}
Run Code Online (Sandbox Code Playgroud)

所有简单的字段,例如NameLastName都已更新。 …

.net c# many-to-many entity-framework

5
推荐指数
0
解决办法
415
查看次数