2015-06-27 171 views
1

過去幾天我試圖找到一種方法如何實現這個王的結果。 我有實體框架功能傳遞懶功能參數

_context.Playlists.Find(playlistId) 

播放列表 - 是我的實體Dbset。

查找() - 查找具有給定主鍵值的實體(如果找到),將其附加到上下文並返回。如果在上下文或商店中找不到實體,則返回null。

playlistId - 我正在尋找播放列表ID。

當然,我可以檢查它的每一個功能,但我得到了很多的這個功能,所以我想保持代碼簡潔而不重複的邏輯在那裏我用各種實體查找()。

我想寫這將檢查它是否是空或不是一個函數。 所以基本上我想要做的是:

MethodToCheckIfNotNull(_context.Playlists.Find(playlistId)); 

所以,如果它爲空,將拋出一個異常,如果它不爲空,將返回實體。 任何人可以提供一個例子,我怎樣才能做到這一點?

回答

1

據我瞭解,你正在尋找generic method像這樣的:

public T MethodToCheckIfNotNull<T>(Func<T> function) where T : class { 
var entity = function(); 
if(entity == null) throw new MyException(); 
return entity; 
} 

這個方法接受通用Func它可以在一個懶惰的方式執行。

使用:

var notNull = MethodToCheckIfNotNull(() => _context.Playlists.Find(playlistId)); 
+0

感謝隊友, 你真正的幫助。 我一直在尋找這種解決方案對於最後2天。上帝祝福你 –