在LINQ to SQL中,我可以这样做:
context.User_Roles.DeleteAllOnSubmit(context.User_Roles.Where(ur => ur.UserId == user.UserId));
Run Code Online (Sandbox Code Playgroud)
什么与实体框架相当?
Fem*_*ref 24
foreach(var entity in context.User_Roles.Where(ur => ur.UserId == user.UserId))
{
context.User_Roles.DeleteObject(entity);
}
context.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
当然,你可以编写一个扩展方法,它将封装它.
这将是这样的:
public static void DeleteObjects<TEntity> (this ObjectSet<TEntity> set, IEnumerable<TEntity> data) where TEntity : class
{
foreach(var entity in data)
set.DeleteObject(entity);
}
Run Code Online (Sandbox Code Playgroud)
被称为:
context.User_Roles.DeleteObjects(context.User_Roles.Where(ur => ur.UserId == user.UserId))
context.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
@Femaref有正确的想法,但对于L2E的真正模拟DeleteAllOnSubmit
,你会希望你的扩展方法在枚举之前复制被删除的实体,这样你就不会在枚举时得到"集合修改"异常.
public static void DeleteAllObjects<TEntity>(this ObjectSet<TEntity> set, IEnumerable<TEntity> data) where TEntity : class {
foreach(var entity in data.ToList()) //data.ToList() makes a copy of data for safe enumeration
set.DeleteObject(entity);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
15109 次 |
最近记录: |