2010-06-16 67 views
0

在我的域用於審計目的我已得到UpdatedOn屬性。 現在我在更新到DateTime.Now之前將其設置在客戶端。但是很多用戶在他們的機器上有不正確的日期時間,所以我需要使用服務器日期時間(getdate(),now()...) 我該如何實現這個策略?NHibernate。當前服務器的日期時間()

回答

1

您可以將此屬性設置爲只讀/只查詢屬性,因此完全忽略應用程序代碼。 只設置一排

CREATE TABLE [dbo].[FooTable](
. 
. 
. 
[UpdatedOn] [datetime] NOT NULL CONSTRAINT [DF_FooTable_UpdatedOn] DEFAULT (Getdate()), 
. 
. 

的插入時的缺省值,這將確保當值未通過則列將GETDATE()

1

的價值在我們的項目,我們定製我們的MsSql2005Dialect。

public class MsSql2005Dialect : NHibernate.Dialect.MsSql2005Dialect 
{ 
    public MsSql2005Dialect() 
    { 
     RegisterFunction("getDate", 
      new NoArgSQLFunction("convert(datetime, floor(convert(float, getdate())))", NHibernateUtil.DateTime, false)); 
     RegisterFunction("getDateTime", 
      new NoArgSQLFunction("getdate", NHibernateUtil.DateTime, true)); 
    } 
} 

和我們寄存器nhibernatehelper此自定義方言: 方言方言= Dialect.GetDialect(configuration.Properties);

寄存器在hibernate.cfg.xml: SAGP.DataAccess.Dialects.MsSql2005Dialect,SAGP.DataAccess,版本= 1.0.0.0,文化=中立,公鑰=空

和HQL像這樣使用: 「從RandomTableFromYourSystem中選擇getDateTime()」;

相關問題