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 回答