C# 模型关系会导致虚张声势/端点出现问题

C# 模型关系会导致虚张声势/端点出现问题,c#,api,asp.net-core,entity-framework-core,swagger,C#,Api,Asp.net Core,Entity Framework Core,Swagger,我有两个实体,教室和学生。一对多关系,我使用EF核心:一个教室可以有很多学生,一个学生可以在一个教室 public class Classroom { public int ClassroomId { get; set; } public List<Student> Students{ get; set; } } public class Student { public int StudentId { get; set; } public stri

我有两个实体,教室和学生。一对多关系,我使用EF核心:一个教室可以有很多学生,一个学生可以在一个教室

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; }
}
公共课堂
{
public int ClassroomId{get;set;}
公共列表学生{get;set;}
}
公立班学生
{
公共int StudentId{get;set;}
公共字符串名称{get;set;
public int ClassroomId{get;set;}
公共教室{get;set;}
}
为了尽可能简短,我省略了Controller、DataContext、DbSet for tables等,但我已经创建了所有这些

现在,如果我运行我的应用程序,并且我想通过Swagger发布一个教室,它包括模型模式中的学生列表,因此我必须创建学生列表,就像我想在创建教室的同时创建一个属性一样。同样,如果我想创建/发布一个学生,它包括模型模式中的教室

相反,我希望能够分别创建教室和学生。创建学生时,我希望能够仅指定教室Id,以便将学生连接到现有教室,而不是同时创建教室

我该怎么做呢?我肯定我误解了什么,所以我很感激能得到的所有帮助。谢谢

我该怎么办

不要将数据库模型暴露于外部世界。它们是您的数据库模型,而不是您的数据交换对象。除了ORM之外,没有人需要或应该看到它们,您可以对它们进行注释,以便您的数据库层知道该做什么

您的控制器层应该有一组模型类,您可以使用它们通过REST(使用swagger)与外部世界进行对话。您可以按照自己认为合适的方式构建它们,您可以对它们进行注释,以便您的REST层了解该做什么


然后,您需要将从外部世界获得的模型映射到您希望使用数据库执行的操作。这应该非常简单。

非常感谢!