我正在处理现有代码,并且做了一些更改。虽然我在数据库表中添加了一些新列,但是代码使用缓存来存储DataTable中的数据。缓存时间设置为15分钟。现在我遇到的问题是,当我将代码部署到生产环境时,它给了我以下错误:
System.InvalidCastException:未为类型'DBNull'和类型'Boolean'定义运算符'='
我几乎尝试了所有操作,从添加IfDBNull()到为表提供默认值“ False”。由于表的默认值设置为零,因此数据库中默认情况下添加的新列的值将为“ False”。但是我仍然收到此错误。我怀疑这与我在服务器端使用的缓存有关。这是业务逻辑中的代码。
Dim ds As DataSet
If HttpRuntime.Cache("MyCacheKeyName") Is Nothing = True Then
ds = New DataAccess().GetDataSet(MLCulture, UserStateID:=UserStateID)
HttpRuntime.Cache.Remove("MyCacheKeyName")
HttpRuntime.Cache.Add("MyCacheKeyName", ds, Nothing, System.DateTime.Now.AddMinutes(15), System.Web.Caching.Cache.NoSlidingExpiration, Caching.CacheItemPriority.Normal, Nothing)
Else
ds = HttpRuntime.Cache("MyCacheKeyName")
End If
Return ds
这是我随更改添加的新代码:
<div class="divStyle" <%# If(String.IsNullOrEmpty(IfDBNull(Container.DataItem("NewBoolean"), False), IfDBNull(Container.DataItem("NewColumnDateTime"), Utility.NullValues.NullDate), IfDBNull(Container.DataItem("NewColumnDateTime"), Utility.NullValues.NullDate), Container.DataItem("ColumnString")), "style='display:none'", If(String.IsNullOrEmpty(Container.DataItem("ColumnString")), "", "style='color:" & Container.DataItem("ColumnString") & ";'"))%>><%#Container.DataItem("ColumnString")%></div>
答案 0 :(得分:0)
尝试一下
HttpRuntime.Cache(“ MyCacheKeyName”)。ToString()