DbSet.Add() adds a single Entity to DbSet. But there is no DbSet.AddRange() to add a list of entities. Is there a method I can call directly from EF that allows me to add a list of Entities? If not, is there any reason why EF does not provide such a method?
In EF6 both DbSet.AddRange
and DbSet.RemoveRange
are available.
The reason to implement them is to improve the performance, what is done by disabling DetectChanges
for each individual addition or removal of an entity.
More details:
NOTE: There isn't still official documentation for this method, as EF is still RC1.
UPDATE: EF6 has been release, and the official documentation for .AddRange() is here, but the explanation of what's happening inside it's in the links above.
Eranga's comment is arguably true. I guess that the real concern is what should be done if any entity in the list has the key property set if the key for underlying table is an identity column:
For this reason, it does not make too much sense to implement AddRange() to the generic class DbSet. If you want something particular fitting your need, you may extend DbSet as following
public static class EFExtension
{
public static void AddRange<TEntity>(this DbSet<TEntity> dbSet, IList<TEntity> entities) where TEntity : class
{
foreach (TEntity e in entities)
{
dbSet.Add(e);
}
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With