自定义Discriminator列名称的简单方法

时间:2016-01-15 10:52:58

标签: c# entity-framework discriminator tph

我通过ODP.NET使用EF6和Oracle。我需要(我不能改变它)所有数据库对象都是大写的。

我添加了一些约定,现在我有大写的所有表,列,外键等。除了由两个TPH层次结构的EF生成的Discriminator列之外的所有列。

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

1 个答案:

答案 0 :(得分:0)

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

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