如何为Subsonic审计字段设置时区?

时间:2011-09-09 14:51:28

标签: timezone subsonic date audit

我喜欢Subsonic自动更新审计字段“CreatedOn”的事实,但它似乎只在服务器时间内完成。有没有办法指示Subsonic将审核日期保存为UTC?

1 个答案:

答案 0 :(得分:0)

提供商 useUTC =“true”中有一项设置 但是很久以前我不记得它是否有效。

<SubSonicService defaultProvider="TAProvider" 
     templateDirectory="..\..\ExternalResources\SubSonicCustomTemplates">
  <providers>
    <clear/>
    <add name="TAProvider" type="SubSonic.SqlDataProvider, SubSonic" 
         connectionStringName="TA" generatedNamespace="TA.DAL" useUTC="true" 
         useSPs="false" generateLazyLoads="false"/>
  </providers>
</SubSonicService>

对我来说,如果一个字段是UTC时间,我总是把它称为xxxUTC,因为我对与时区有关的事情感到非常困惑,所以我修改了Controller模板Save方法,如下所示。基本上只需检查列并根据需要进行设置......

            <%=tbl.ClassName %> oldItem = null;
            if (item.<%=tbl.PrimaryKey.PropertyName%> != <%=emptyVariableText%>)
                oldItem = new <%=tbl.ClassName %>(item.<%=tbl.PrimaryKey.PropertyName%>);

            if (item.<%=tbl.PrimaryKey.PropertyName%> == <%=emptyVariableText%>)
            {
                            item.IsNew = true;
<%  if (tbl.Columns.Contains("CreatedOnUTC"))
    { 
%>                    item.CreatedOnUTC = DateTime.UtcNow; 
<%  } 
    if (tbl.Columns.Contains("CreatedOn")) // just checking
    { 
%>                  error: createdon column. fix and rerun template 
<%  } 
    if (tbl.Columns.Contains("CreatedByID"))
    { 
%>                    item.CreatedByID = taUser.telUser.TelUserID; 
<%  } 
%>
            }
<%  if (tbl.Columns.Contains("ModifiedOnUTC"))  
    { 
%>                item.ModifiedOnUTC = DateTime.UtcNow; 
<%} 
    if (tbl.Columns.Contains("ModifiedByID"))
    {   
%>                item.ModifiedByID = taUser.telUser.TelUserID; 
<%  } 
%>            
            try
            {