A Y*_*Y B 7 c# discriminator entity-framework-core
我希望在检索基类时,我应该获取表中的所有行,而不考虑鉴别器。我只想在检索派生类之一时使用鉴别器。我怎样才能做到这一点?
我尝试的第一件事是只为派生类设置 HasValue,而不是像这样的基类......
modelBuilder.Entity<BaseClass>(entity =>
{
entity.HasDiscriminator(e => e.DiscriminatorProperty)
// .HasValue<BaseClass>()
.HasValue<DerivedClass1>(1)
.HasValue<DerivedClass2>(2);
});
Run Code Online (Sandbox Code Playgroud)
...但这给了我以下错误:
System.Private.CoreLib.dll 中发生“System.InvalidOperationException”类型的异常,但未在用户代码中进行处理:“实体类型“BaseClass”是层次结构的一部分,但没有配置鉴别器值。”
我尝试的另一件事是为每个可能的鉴别器值配置 BaseClass,如下所示......
modelBuilder.Entity<BaseClass>(entity =>
{
entity.HasDiscriminator(e => e.DiscriminatorProperty)
.HasValue<BaseClass>(1)
.HasValue<BaseClass>(2)
.HasValue<DerivedClass1>(1)
.HasValue<DerivedClass2>(2);
});
Run Code Online (Sandbox Code Playgroud)
...但是当实际尝试检索基类时,我只得到了鉴别器值为 1 的记录。EF Core 似乎只识别第一个配置并忽略下一个配置。
所以我的问题是如何专门为派生类而不是基类配置鉴别器?换句话说,当检索基类时,我应该获取表中的所有记录。
归档时间: |
|
查看次数: |
2978 次 |
最近记录: |