首页 > 解决方案 > Entity Framework6 中的 HasConversion 函数

问题描述

我有 2 个数据库(oracle 和 postgre)。

由于某种原因,同一字段中存在具有不同数据类型的表。

PostgreSQL 中的 FIELD 类型为 NUMBER(1),但 Oracle 中的类型为 VARCHAR(1)。

在我的程序中,我将此字段设置为数字类型。

public class Table
{
    public int? FIELD { get; set; }
}

并在检测到用户输入oracle数据库连接时在builder中设置转换。

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    if (DBType == "Oracle") //Oracle
    {
      modelBuilder.Entity<Table>().Property(b => b.FIELD).HasConversion<string>();
    }
}

这些代码在 EF Core 中运行良好。

但最近我需要使用 Entity Framework 6 启用此功能。

而且我发现实体框架中没有“HasConversion”功能。

我尝试改用“HasColumnType”。

modelBuilder.Entity<Table>().Property(b => b.FIELD).HasColumnType("varchar2");

但是会出现错误:

错误 2019:指定的成员映射无效。'Models.TABLE' 类型中成员 'FIELD' 的类型 'Edm.Int32[Nullable=True,DefaultValue=]' 与 'OracleEFProvider.varchar2[Nullable=True,DefaultValue=,MaxLength=32767,Unicode=False 'CodeFirstDatabaseSchema.TABLE' 类型中成员 'FIELD' 的 ,FixedLength=False]'。

如何解决这个错误?

标签: entity-framework

解决方案


推荐阅读