static async Task Main(string[] args) { try { EntityFrameworkProfiler.Initialize(); var config = Devart.Data.Oracle.Entity.Configuration.OracleEntityProviderConfig.Instance; config.CodeFirstOptions.UseNonUnicodeStrings = true; config.CodeFirstOptions.UseNonLobStrings = true; var builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.development.json", optional: false, reloadOnChange: true); var configuration = builder.Build(); EntityContext.ConnectionString = ComposeConnectionString(configuration); using (var scope = new TransactionScope( TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = IsolationLevel.ReadCommitted }, TransactionScopeAsyncFlowOption.Enabled)) { using (var context = new EntityContext()) { context.Database.EnsureDeleted(); context.Database.ExecuteSqlRaw(@" CREATE TABLE BEAST_RIDER ( ID NUMBER (19, 0) GENERATED ALWAYS AS IDENTITY NOT NULL, NAME VARCHAR2 (50 CHAR) NOT NULL, DISCRIMINATOR VARCHAR2 (50 CHAR) NOT NULL )"); await context.SaveChangesAsync(); } scope.Complete(); } using (var context = new EntityContext()) { // 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); } Console.WriteLine("Finished."); } catch (Exception ex) { Console.WriteLine(ex); } Console.ReadKey(); }