自定义鉴别器列名称的简单方法

本文关键字:简单 方法 鉴别 自定义 | 更新日期: 2023-09-27 18:30:40

我正在通过 ODP.NET 将EF6与Oracle一起使用。而且我需要(我无法更改它)所有数据库对象都是大写的。

添加了一些约定,现在我的所有表、列、外键等都是大写的。除 EF 为两个 TPH 层次结构生成的鉴别器列外的所有列。

我的问题是我如何告诉 EF 重命名此列?我知道Requires(...).HasValue(...)语法的方式,但我不想为每种类型(以及将来的每个新层次结构)指定鉴别器值。我对默认值感到满意,只想重命名列本身。

自定义鉴别器列名称的简单方法

以下约定解决了我的问题(在此处找到):

public class UpperCaseDiscriminatorConvention : IStoreModelConvention<EdmProperty>
{
    public void Apply(EdmProperty property, DbModel model)
    {
        if (property.Name == "Discriminator")
        {
            property.Name = "DISCRIMINATOR";
        }
    }
}