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