如何列出包含 EF Core 中所有特定子字段的抽象类中的对象?

问题描述 投票:0回答:1

这个问题我已经有一段时间了,我还没有在 Microsoft 的文档或 StackOverflow 上看到解决方案。

问题:我有一个抽象类,锻炼

public abstract class Workout
{
    public WorkoutType Type { get; set; }
    public List<Measurement> Measurements { get; set; } = new();

    // Id's and stuff
}

我有几个继承自Workout的子类,两个例子:

跑步锻炼

public class RunningWorkout : Workout
{
    public double PersonalBest { get; set; }
}

WeightWorkout

public class WeightWorkout : Workout
{
    public int PersonalBest { get; set; }
}

现在,我想要一个 API 端点,我可以在其中获取用户的所有锻炼。但是,我只能设法获取基类中的字段。我尝试了多种方法来获取子类的所有子字段,但无济于事。 “从派生类型继承”不起作用,因为 PersonalBest 字段不是实体而是原始类型。

关于如何获得包含所有子属性的所有锻炼列表的任何想法?

c# asp.net-core inheritance entity-framework-core ef-fluent-api
1个回答
0
投票

CodeCaster评论中链接到“How to serialize properties of derived classes with System.Text.Json”,其中表示您可以添加

[JsonDerivedType(typeof(YourDerivedClassHere))]
在所有派生类型的抽象类之上。

这会序列化派生类的所有子属性,在我的例子中,当在 API 端点使用 aspnetcore 时。这并不能使您可以在运行时访问所有派生的子属性,但由于这不是我的问题,我将其标记为已解决。

© www.soinside.com 2019 - 2024. All rights reserved.