gpt4 book ai didi

c# - 为什么 Entity Framework Remove vs RemoveRange 返回类型不是 void 或 bool

转载 作者:行者123 更新时间:2023-11-30 16:06:06 32 4
gpt4 key购买 nike

在使用 entityframework 时,我看到方法 RemoveRemoveRange 的语法是

public virtual TEntity Remove(TEntity entity);

public virtual IEnumerable<TEntity> RemoveRange(IEnumerable<TEntity> entities);

只是我们期望返回类型是一个bool;这表明实体是否成功删除。现在,如果它确实返回了这些值,那么在某些情况下它可能会有用。

我认为 RemoveRange 会返回已成功删除的实体列表。在这种情况下,可以检查哪些实体从列表中删除为

var db = new MyDataContext();
var itemsToRemove = db.MySet.Where(x => !x.active);
var removedItems = db.MySet.RemoveRange(itemsToRemove);

并使用 removedItems 列表来显示成功移除的项目。

我不明白我是否应该捕捉那个返回值。是否有任何特定场景需要捕获和使用这些方法的返回值?

最佳答案

如果你看code ,您会看到它返回相同的对象:

public virtual TEntity Remove(TEntity entity)
{
Check.NotNull<TEntity>(entity, "entity");
this.GetInternalSetWithCheck("Remove").Remove((object) entity);
return entity;
}

我认为,这主要是因为他们可以做到。因此,您无法在 Remove 方法之后捕获结果。

但我可以想象这样的情况:你需要在删除后对实体做一些事情:

void LogEntity<TEntity>(TEntity entity)
{
//...log
}

void Method(User user)
{
LogEntity(context.Set<User>().Remove(user));
}

代替:

void Method(User user)
{
context.Set<User>().Remove(user);
LogEntity(user);
}

关于c# - 为什么 Entity Framework Remove vs RemoveRange 返回类型不是 void 或 bool,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32761881/

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