我有两个实体:“类”和“学生”。一对多关系,我使用 EF Core:一个教室可以有多个学生,一个学生可以在一个教室中。
public class Classroom
{
public int ClassroomId { get; set; }
public List<Student> Students{ get; set; }
}
public class Student
{
public int StudentId { get; set; }
public string Name { get; set;
public int ClassroomId { get; set; }
public Classroom Classroom { get; set; }
}
为了使其尽可能短,我省略了用于表的 Controller、DataContext、DbSet<> 等,但我已经创建了所有这些。
现在,如果我运行我的应用程序并且想要通过 Swagger 发布类,它会在模型架构中包含学生列表,因此我必须创建学生列表,就好像这是我想在创建教室的同时创建的属性(property)。同样,如果我想创建/发布学生,它会将教室包含在模型架构中。
相反,我希望能够分别创建教室和学生。当我创建学生时,我希望能够仅指定教室 ID,以便我可以将学生连接到现有教室,而不是同时创建它们。
我该如何解决这个问题?我确信我误解了一些东西,所以我感谢我能得到的所有帮助。谢谢
最佳答案
How do I go about this?
您不向外界公开您的数据库模型。它们是您的数据库模型,而不是您的数据交换对象。除了您的 ORM 之外没有人需要看到它们或应该看到它们,您可以对它们进行注释,以便您的数据库层知道该怎么做。
您的 Controller 层应该有一组模型类,您可以使用它们通过 REST(使用 swagger)与外界通信。您可以按照您认为合适的方式构建它们,您可以对它们进行注释,以便您的 REST 层了解要做什么。
然后,您需要将从外部世界获得的模型映射到您想要使用数据库执行的操作。这应该是非常简单的。
关于c# - 模型关系导致 Swagger/端点出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67507251/