Given a simple hierarchy with EntityMapping:
Code: Select all
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<BeastRider>().ToTable("BEAST_RIDER");
modelBuilder.Entity<BeastRider>().HasKey(_ => _.Id);
modelBuilder.Entity<BeastRider>().Property(_ => _.Id).HasColumnName("ID");
modelBuilder.Entity<BeastRider>().Property(_ => _.Name).HasColumnName("NAME");
modelBuilder.Entity<BeastRider>()
.HasDiscriminator<string>("DISCRIMINATOR")
.HasValue<BeastRider>(nameof(BeastRider))
.HasValue<BirdRider>(nameof(BirdRider));
modelBuilder.Entity<BeastRider>().Property("DISCRIMINATOR").HasMaxLength(50);
}
Code: Select all
// Both methods of querying derived entities generate
// ... WHERE "b".DISCRIMINATOR = TO_NCLOB('BirdRider')
// resulting in 'ORA-00932: inconsistent datatypes: expected - got NCLOB'
var birdRider = context
.Set<BirdRider>()
.FirstOrDefault();
var beastRider = context
.Set<BeastRider>()
.FirstOrDefault(_ => _ is BirdRider);
Reproducible for:
- Devart.Data.Oracle.EFCore: 9.9.887
- Microsoft.EntityFrameworkCore.Relational: 3.0.1 & 3.1.0
- .NET Core SDK versions: 3.0.101 & 3.1.100
- .NET Core Runtime versions: 3.0 & 3.1