2010-06-16 5 views
0

В моих доменах для целей аудита у меня есть свойство UpdateOn. Теперь я установил его у клиента перед обновлением до DateTime.Now. Но многие пользователи имеют неправильное время на своих машинах, поэтому мне нужно использовать datetime сервера (getdate(), now() ...) Как я могу реализовать эту стратегию?NHibernate. Текущий сервер datetime()

ответ

0

Я собираюсь предложить этот http://mastercsharp.com/article.aspx?ArticleID=66&TopicID=7 для вас с этого может быть тем, что вы ищете. Или вы можете просто создать веб-сервис, чтобы вернуть время сервера ...

+0

Это очень трудно для этого легко думать. Я хочу, чтобы мой сервер sql возвращал свое datetime –

+0

да, я думал об этом после того, как я разместил это :) – Buildstarted

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, Version = 1.0.0.0, культура = нейтральной, PublicKeyToken = нуль

и использовать это в HQL как: "выберите getDateTime() из RandomTableFromYourSystem";

Смежные вопросы