Given this entity mapping:
Code: Select all
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<OtherBeastRider>().ToTable("OTHER_RIDER");
modelBuilder.Entity<OtherBeastRider>().HasKey(_ => _.Id);
modelBuilder.Entity<OtherBeastRider>().Property(_ => _.Id).HasColumnName("ID");
modelBuilder.Entity<OtherBeastRider>().OwnsOne(
o => o.Beast,
sa =>
{
sa.Property<long>("Id").HasColumnName("ID");
sa.Property(p => p.Name).HasColumnName("BEAST_NAME");
sa.Property(p => p.Type).HasColumnName("BEAST_TYPE").HasConversion<string>();
});
}
Code: Select all
var otherRider = context
.Set<OtherBeastRider>()
.FirstOrDefault(_ =>
_.Beast.Name == "Viscerion" || // Correctly translated to SQL
_.Beast.Name.StartsWith("Viscerion") || // ERROR ORA-00904: "_.Beast"."BEAST_NAME": invalid identifier
_.Beast.Name.Contains("Viscerion") || // ERROR ORA-00904: "_.Beast"."BEAST_NAME": invalid identifier
_.Beast.Name.EndsWith("Viscerion") // ERROR ORA-00904: "_.Beast"."BEAST_NAME": invalid identifier
);
Code: Select all
SELECT "_".ID,
"_".ID AS ID1,
"_".BEAST_NAME,
"_".BEAST_TYPE
FROM OTHER_RIDER "_"
WHERE ( ( ("_".BEAST_NAME = 'Viscerion')
OR ("_.Beast".BEAST_NAME LIKE 'Viscerion%'))
OR ("_.Beast".BEAST_NAME LIKE '%Viscerion%'))
OR ("_.Beast".BEAST_NAME LIKE '%Viscerion')
FETCH FIRST 1 ROWS ONLY
A repository reproducing this issue can be found here: https://github.com/LBRitsSES/devart-efc ... -bug-repro
Devart.Data.Oracle.EFCore Version: 9.9.872