自定义鉴别器列名的简单方法
Simple way to customize Discriminator column name
我通过 ODP.NET 将 EF6 与 Oracle 结合使用。而且我需要(而且我无法更改它)所有 db 对象都是大写的。
我添加了一些约定,现在我的所有表、列、外键等都是大写的。 EF 为两个 TPH 层次结构生成的除鉴别器列之外的所有列。
我的问题是如何让 EF 重命名此列?我知道 Requires(...).HasValue(...)
语法的方式,但我不想为每种类型(以及未来的每个新层次结构)指定鉴别器值。我对默认值很满意,只想重命名列本身。
以下约定解决了我的问题(发现 here):
public class UpperCaseDiscriminatorConvention : IStoreModelConvention<EdmProperty>
{
public void Apply(EdmProperty property, DbModel model)
{
if (property.Name == "Discriminator")
{
property.Name = "DISCRIMINATOR";
}
}
}
我通过 ODP.NET 将 EF6 与 Oracle 结合使用。而且我需要(而且我无法更改它)所有 db 对象都是大写的。
我添加了一些约定,现在我的所有表、列、外键等都是大写的。 EF 为两个 TPH 层次结构生成的除鉴别器列之外的所有列。
我的问题是如何让 EF 重命名此列?我知道 Requires(...).HasValue(...)
语法的方式,但我不想为每种类型(以及未来的每个新层次结构)指定鉴别器值。我对默认值很满意,只想重命名列本身。
以下约定解决了我的问题(发现 here):
public class UpperCaseDiscriminatorConvention : IStoreModelConvention<EdmProperty>
{
public void Apply(EdmProperty property, DbModel model)
{
if (property.Name == "Discriminator")
{
property.Name = "DISCRIMINATOR";
}
}
}