我一定不能理解它。 我创建了一个这样的静态类:
public static class oDs
{
public static DataSet columnsxml
{
get
{
DataSet oDs = new DataSet();
oDs.ReadXml(HttpContext.Current.Server.MapPath("~/App_Data/Columns.xml"));
return oDs;
}
}
}
在Page_Load类中使用,如下所示:
foreach (DataRow row in oDs.columnsxml.Tables[0].AsEnumerable())
{
MyCode()
}
我的期望是,因为我将类oDs静态化,所以它不会在每个页面请求上继续读取XML文件,但结果证明是错误的。如果我在运行时更改XML,则下一页请求将具有更新的信息。我担心这会对性能产生影响。 我是否还必须在静态类中执行MyCode()?
编辑:我知道企业库,但更愿意没有缓存。
答案 0 :(得分:1)
一切都取决于你的目标。如果文件的内容是静态的,意味着它在应用程序生命周期中没有更改,那么您可以通过这种方式更改静态类:
public static class oDs
{
private static DataSet _oDs;
public static DataSet columnsxml
{
get
{
if (_oDs == null)
{
_oDs = new DataSet();
_oDs.ReadXml(HttpContext.Current.Server.MapPath("~/App_Data/Columns.xml"));
}
return _oDs;
}
}
}
请注意,此代码不是安全的,因此您可能希望在那里添加锁定。
另一种选择是使用Global.asax中的Application_Start事件在应用程序启动时加载文件内容。