Entity framework core 获取表之间没有关系的相关数据

Entity framework core 获取表之间没有关系的相关数据,entity-framework-core,entity-framework-core-2.1,Entity Framework Core,Entity Framework Core 2.1,当我有两个具有一对多关系的模型时,它们看起来像下面的模型: public class Student { [Key] [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] public int StudentID { get; set; } public string Name { get; set; } public int ClassID { get; set; } [

当我有两个具有一对多关系的模型时,它们看起来像下面的模型:

public class Student
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int StudentID { get; set; }

    public string Name { get; set; }

    public int ClassID { get; set; }
    [ForeignKey("ClassID")]
    public virtual Class Class { get; set; }
}

public class Class
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int ClassID { get; set; }

    public string Name { get; set; }

    public virtual ICollection<Student> Students { get; set; }
}
公共班级学生
{
[关键]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
公共int StudentID{get;set;}
公共字符串名称{get;set;}
public int ClassID{get;set;}
[外国钥匙(“ClassID”)]
公共虚拟类{get;set;}
}
公共课
{
[关键]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int ClassID{get;set;}
公共字符串名称{get;set;}
公共虚拟ICollection学生{get;set;}
}

这意味着我可以使用include方法来获取相关数据。现在我在一个有600多个表的项目上工作。对于这些表,没有关系,我无法在表之间创建关系。是否有方法以某种方式链接模型,以便我能够获取相关数据?

是的,您可以在模型类中连接没有关系的表

例如,假设您在两个表
Student
Class
中都有
TeacherId

您可以基于
TeacherId
如下连接两个表

DbContext.Students
.Join(DbContext.Classes,student=>student.TeacherId,class=>class.TeacherId, (std,tchr)=> new {std,tchr});

实体模型中的关系是链接。通常,它们在数据库中具有相应的关系,但这不是强制性的(尽管如果依赖数据包含相关表中没有对应PK的FK,则可能会得到意外的结果,因为EF Core假定关系在数据库中强制执行)。另一种方法是不要尝试在模型级别链接它们,而是使用普通的LINQ连接查询。