[英]Entity framework and Classes
我正在尝试学习实体框架。 说,我有以下课程
class Course
{
[Key]
public virtual int CourseID {get; set;}
public virtual string CourseName {get; set;}
}
class CourseDBContext:DBContext
{
public DbSet<Course> Courses{get;set;}
}
然后我可以使用Linq查询数据库,如下所示
using (CourseDBContext a = new CourseDBContext())
{
var b = from c in a.Course
where c.CourseID == 1001
select c;
var d = b.FirstOrDefault();
if(d != null)
Console.WriteLine(d.CourseName);
}
这很好用。 现在,如果我添加第二个类
class Assignment
{
[Key]
public virtual int CourseID {get; set;}
public virtual int StaffID {get; set;}
}
class AssignmentDBContext:DBContext
{
public DbSet<Assignment> Assignments{get;set;}
}
现在,我如何使用Linq选择并显示与CourseID = 1001相关联的CourseName和StaffID? 上面的例子是人为设计的,因此表格设计和字段无关紧要。 我只想知道如何使用Entity Framework和Linq从两个不同的数据库表中查询两个类之间的数据。
谢谢
两个实体都需要处于相同的上下文中。
public class CoursesContext: DbContext
{
public DbSet<Assignment> Assignments {get; set;}
public DbSet<Course> Courses {get; set;}
}
您可以添加“分配”导航属性以过滤外键:
public class Course
{
[Key]
public virtual int CourseID {get; set;}
public virtual string CourseName {get; set;}
public virtual Assignment {get; set;}
}
然后你可以这样查询:
var staffId =
from c in a.Course
where c.CourseID == 1001
select c.Assignment.StaffID;
每个DbSet没有单独的上下文。 即
class MyDbContext : DBContext
{
public DbSet<Course> Courses{get;set;}
public DbSet<Assignment> Assignments{get;set;}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.