0

データベース内の既に配置されているテーブルで、CreationDate の列を追加しようとしています

mapping.Map(x => x.CreationDate)
            .Not.Nullable()
            .Default("to_date('01-01-0001','dd-MM-yyyy')")

これは oracle では問題なく動作しますが、SQLite はこれを理解できません。これは、to_date() 関数を認識していないため、完全に正常です。

私が使用する場合

DateTime.MinValue.ToString()

特定の形式の有無にかかわらず、デフォルト値。その後、SQLite では動作しますが、Oracle では動作しません。

誰かがこれを解決する解決策を知っていますか。

4

1 に答える 1

1

デフォルト値を省略し、規則を記述します

class CreationDateConvention  : IPropertyConvention
{
    public CreationDateConvention(string default)
    {
        _default = default;
    }

    public void Apply(... instance)
    {
        if (instance.Name == "CreationDate")
            instance.Default(_default)
    }
}


// and while configuring
...FluentMappings.AddFromAssemblyOf<>().Conventions.Add(new CreationDateConvention(isOracle ? "to_date..." : Datetime.Minvalue.ToString())
于 2012-09-19T13:19:00.283 に答える