根据FK关系实现一个对象的所有数据的动态加载

本文关键字:数据 动态 加载 根据 关系 实现 一个对象 FK | 更新日期: 2023-09-27 18:16:01

如何在ASP中使用动态加载?. NET 4.5/EF6/MySQL实现以下结果:

我有以下MySQL表(示例):

table_1

  • t1_id
  • t1_name
  • t2_id(颗)

table_2

  • t2_id
  • t2_name

table_3

  • t3_id
  • t1_id(颗)
  • t3_name

我正在使用ASP。. NET 4.5/实体框架6/MySQL 5使用最新的。net连接器,并在Visual Studio 2013中开发。

我想知道如何使用急切加载来获得以下结果:

表3项可以有多个t1 id和对应于FK关系的T3行,以及一个匹配T3> t1 FK关系的所有行的数组。

T1 {
     t1_id = 1,
     t1_name = "something",
     t2_id = 3,
       T2 {
           t2_id = 3,
           t2_name = "something 2"
          },
     Collection {
       T3 {
           1: { 
             t3_id = 5,
             t3_name = "name"
             t1_id = 1
            },
           2: {
              t3_id = 6,
              t3_name = "name2",
              t1_id = 1
        },
       }
     }

我希望有一个对象,该对象包含基于我在MySQL WorkBench中为每个表创建的外键关系的相关表的关系中的所有数据。

根据FK关系实现一个对象的所有数据的动态加载

您需要在类中使用virtual关键字定义属性。所以如果你想要一个延迟/急切加载的集合,你的类看起来像:

public class A
{
... Some properties ...
}
public class B
{
    public int Id {get;set;}
    public virtual IColection<A> As {get;set;}   
}

如果不能更改类,也可以尝试使用include:

var b = context.B.Include("As");