14

現在のプロジェクトでは Fluent Nhibernate と Nhibernate を使用しています。時間をミリ秒単位で記録する必要があります。マッピング用にこれを持っています

            Map(x => x.SystemDateTime)
            .CustomType("Timestamp")
            .Not.Nullable();

hbm.xml ファイルを生成しました。行は次のとおりです。

<property name="SystemDateTime" type="Timestamp">
  <column name="SystemDateTime" not-null="true" />
</property>

これが修正であると読みましたが、データベースのレコードにはミリ秒がありません。誰かがこの問題を解決しましたか。また、CustomSqlType も試しました。

ありがとう

4

3 に答える 3

13

私たちはあなたと同じアプローチを使用し、ミリ秒を正しく保存します。古いレコードはミリ秒を失ってしまいますが、常にそのようにしていたわけではありません。

すべての DateTime フィールドにミリ秒を格納すると仮定すると、次の規則を使用できます。

public class OurPropertyConventions : IPropertyConvention
{
    public void Apply(IPropertyInstance instance)
    {
        Type type = instance.Property.PropertyType;
        if (type == typeof(DateTime) || type == typeof(DateTime?))
            instance.CustomType("Timestamp");
    }
}

マッピングは次のようになります。

Map(x => x.SystemDateTime).Not.Nullable();
于 2011-10-06T22:55:11.610 に答える
1

これは私にとってはうまくいきませんでした:

Map(x => x.DateCreated).Column("DATE_CREATED").CustomSqlType("TIMESTAMP(6) WITH TIME ZONE").Not.Nullable();

これはしましたが:

Map(x => x.DateCreated).Column("DATE_CREATED").CustomType("timestamp").CustomSqlType("TIMESTAMP(6) WITH TIME ZONE").Not.Nullable();

理由はわかりませんが:/

于 2012-07-11T07:11:15.453 に答える