在我征服,試圖程序的功能更強大的方式,我想出了下面的靜態函數:確保給定輸入(純函數)的輸出相同?
public static class BaseService
{
public static T EntityGet<T>(Guid id, XrmServiceContext xrmServiceContext) where T : Entity
{
return xrmServiceContext.CreateQuery<T>().Single(query => query.Id == id);
}
}
我們如何才能確保它是確定的,總是返回相同的值在規定輸入?
請注意,XrmServiceContext是一個存儲庫,可能會根據連接是否打開或關閉而拋出。
我們是否應該將返回類型換成Maybe? :
public static Maybe<T> EntityGet<T>(Guid id, XrmServiceContext xrmServiceContext) where T : Entity
{
return xrmServiceContext.CreateQuery<T>().Single(query => query.Id == id).ToMaybe();
}
這樣我們可以100%確定返回值。
問題: 的也許變化後,可我們現在已經完全確定性的行爲,無論倉庫是在向上或向下?
單個將拋出一個異常,如果數據庫關閉,所以執行將不會達到ToMaybe。另外我不確定任何調用數據庫的函數(外部存儲)在嚴格意義上是否可以是純粹的。 – Evk
我不知道。我們可以得出結論:你不能有一個純數據庫調用的函數嗎? –