繁体   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