Question

I am using Entity Framework with the generic repository pattern. I have used the following method to add an object.

public int Add<TEntity>(TEntity entity) where TEntity : class
{
   DataContext.AddObject(GetEntityName<TEntity>(), entity);
   return SaveChanges();
}

I am also thinking of extending this to support multiple entities.

public int Add<TEntity>(TEntity[] collection) where TEntity : class
{
   foreach (TEntity item in collection)
   {
     DataContext.AddObject(GetEntityName<TEntity>(), item);
   }

   return SaveChanges();
}

Will there be an actual benefit in using Parallel.ForEach instead of the foreach loop in the above scenario?

Also because I haven't called SaveChanges() until the end of the loop, if there is lets say a primary key violation, will it be thrown inside the loop or when SaveChanges() is called? Will I be able to rollback the changes?

Était-ce utile?

La solution

ObjectContext is not thread safe. Here's the remark on MSDN

The ObjectContext class is not thread safe. The integrity of data objects in an ObjectContext cannot be ensured in multithreaded scenarios.

So better not use Parallel.ForEach.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top