[英]why Cannot implicitly convert type 'void' to 'bool'?
[英]Why entityframework Remove & RemoveRange return type not void or bool
在使用entityframework時,我已經看到了Remove
和RemoveRange
方法的語法
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.