I have two base classes where each base class has inherited subclasses:
[Table("BaseClassOne")]
public class BaseClassOne
{
public Guid Id { get; set; }
public BaseClassTwo BaseTwo { get; set; }
}
[Table("DerivedClassOne")]
public class DerivedClassOne : BaseClassOne
{
public Guid Id { get; set; }
public string Name { get; set; }
}
[Table("BaseClassTwo")]
public class BaseClassTwo
{
public Guid Id { get; set; }
public BaseClassOne BaseOne { get; set; }
}
[Table("DerivedClassTwo")]
public class DerivedClassTwo : BaseClassTwo
{
public Guid Id { get; set; }
}
Now I would like to configure the relationships via model-builder, but without needing a discriminator:
builder
.Entity<BaseClassOne>()
.HasKey(b1 => b1.Id);
builder
.Entity<DerivedClassOne>()
.HasBaseType<BaseClassOne>();
builder
.Entity<BaseClassTwo>()
.HasKey(b2 => b2.Id);
builder
.Entity<DerivedClassTwo>()
.HasBaseType<BaseClassTwo>();
//This is where the problem starts:
builder
.Entity<BaseClassTwo>()
.HasOne(b2 => b2.BaseClassOne)
.WithOne(b1 => b1.BaseClassTwo)
.HasForeignKey<BaseClassTwo>(e => e.Id)
.OnDelete(Rule.Cascade);
I'm trying to run a query like following I get an error that the column m.Discriminator
can't be found:
_context.BaseClassesTwo
.Select(b2 => new
{
val1 = b2.name,
val2 = b2.BaseClassOne.name
})
.ToList();
Is this an conceptional problem or do I need to change the configuration? And when, how?