我正在使用带有EF Core(2.0)的.Net Core构建WebApi,并在保存实体列表时发现问题。
问题是我的实体中有一个导航属性,例如:
public class Student
{
public Course Course {get; set;}
}
要保存单个实体,我正在使用它来避免尝试插入已存在的课程:
student.Course = _context.Courses.Attach(student.Crouse).Entity
我觉得它很难看,想知道更好的方法,但它确实有效。有时我允许API接收Students
的列表,并且应该将它们全部保存。如果在同一课程中调用两次,则调用Attach
会引发异常。
我想要的只是EF Core只使用正确的外键保存Student实体,我不想在数据库中的Course实体中完成任何操作。实现这一目标的最佳方法是什么?
答案 0 :(得分:0)
我发现它很难看,想知道更好的方法
是的,有DTO。它们就像我们创建的数据模型一样。
因此,您需要创建一个CreateStudentDto,您将在创建过程中使用它。
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
...
//this won't contain the -> public Course Course {get; set;}
}
因此,当您获得输入或将输入从实体类映射到createmodel时,Mapper / Input将自动从您的创建中剥离课程。