簡體   English   中英

為什么entityframework Remove&RemoveRange返回類型不是void或bool

[英]Why entityframework Remove & RemoveRange return type not void or bool

在使用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列表顯示成功刪除的項目。

我不明白我是否應該抓住那些回報值。 是否存在需要捕獲和使用這些方法的返回值的特定方案?

如果你看代碼 ,你會看到它返回相同的對象:

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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM