【问题标题】:Get related data without relationship between tables获取没有表之间关系的相关数据
【发布时间】:2018-07-06 05:53:00
【问题描述】:

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

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; }
}

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

【问题讨论】:

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

标签: entity-framework-core entity-framework-core-2.1


【解决方案1】:

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

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

您可以根据TeacherId连接两个表,如下所示

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多