Dev*_*vid 5 c# entity-framework foreign-key-relationship
这是非常基本的问题,我确信,但现在让我感到困惑:S
我有2个表,学生和课程有外键约束,许多学生到1个课程.
我在Students表中存储了一个CourseId_FK参考,所以当我创建一个学生时,我怎么能做这样的事情?
Students student = new Students();
student.Name = Bob;
student.Course.CourseName = "Geography";
db.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
现在,以上不起作用,我必须解决
student.CourseId = 22;
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我吗?
谢谢
大卫
看看你的实体,"学生"是否有"课程"(Really:Courses)属性?
对于您想要做的事情,您的实体应该看起来像这样:
public class Student
{
public string Name {get; set;}
public virtual ICollection<Course> Courses {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
然后你会做类似的事情:
Student student = new Student();
student.Name = Bob;
student.Courses.Add(db.Courses.Where(c => c.CourseName == "Geography"));
Run Code Online (Sandbox Code Playgroud)
编辑: 如果学生只能有一门课程,则修改课程,Student使其如下所示:
public class Student
{
public int StudentId {get; set;}
public string Name {get; set;}
public int CourseId {get; set;}
public virtual Course Course {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
然后你的代码看起来像这样:
student.Course = db.Courses.Where(c => c.CourseName == "Geography"));
Run Code Online (Sandbox Code Playgroud)
你的代码发生了什么(我希望)是你只有CourseId这样,所以你不能为你的学生分配一个实际的课程对象.
如果您不想加载整个课程实体:
Student student = new Student();
student.Name = Bob;
student.CourseId = db.Courses
.Where(c => c.CourseName == "Geography")
.Select(c => c.CourseId).First();
db.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
这只会Id从数据库中获取地理课程的内容(如果没有,则会崩溃)。
| 归档时间: |
|
| 查看次数: |
7301 次 |
| 最近记录: |