簡體   English   中英

流利的NHibernate映射到Oracle 11G和SQLite

[英]Fluent NHibernate mapping to Oracle 11G and SQLite

在數據庫中已經存在的表上,我們嘗試為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中將不工作。

有人知道解決方案嗎?

省略默認值並編寫約定

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())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM