在我征服,试图程序的功能更强大的方式,我想出了下面的静态函数:确保给定输入(纯函数)的输出相同?
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
我不知道。我们可以得出结论:你不能有一个纯数据库调用的函数吗? –