数据库表间多对多关系(附带额外字段)的实体类(POJO 或 POCO)表示

本文介绍了如何在C#和Java中表示具有额外字段的多对多数据库关系,通过实体类(POJO/POCO)设计。以学生选课为例,展示了在多对多关系中添加成绩等附加信息的方法,强调了将多对多关系抽象为单独实体的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

介绍

在之前的 Entity Framework 快速上手介绍 之中,两个实体之间只是简单的一对一关系,而在实际的应用场景中,还会出现多对多关系,同时还有可能会出现多对多关系还附带有其他字段的情况。

下面以几个例子,对表间多对多关系的类表示加以更加详细地描述。虽然两个场景举例是使用的 C# 及 Entity Framework(Model First) 框架自动生成数据库、实体类。但这种设计方法,并不只是在使用 ORM 框架时需要,事实上,它是 POCO 及简单 Java 类(POJO)的设计原则之一。

场景实例

场景一

在考虑多对多关系还附带有字段的情况之前,让我们先看一下,多对多关系但不附带额外字段的情况下,实体类代码的表示。

此处使用 Entity Framework(Model First),快速将 model diagram 转为数据库中的表及实体类。

假设的场景是学生选课,一名学生可以选多门课,一门课也可以被多个学生选择。E-R 图如下所示:
1104579-20170526203822872-1383747342.png

对应自动生成的数据库如下:

1104579-20170526204422044-36349200.png

  • StudentSet
    1104579-20170526201734497-273871464.png
  • CourseSet
    1104579-20170526201740747-806786252.png
  • CourseRegistrationSet
    1104579-20170526204412497-32662665.png
    • 其中 Course_Id 与 Students_Id(注:此处词尾(s)负数的原因参见上面 E-R 图中右边的 Properties 中 End1 Navigation Property 的设置)分别以另外两张数据表的 Id 主键作为外键。
    • 同时 Course_Id与 Students_Id 两者联合做 CourseRegistrationSet 表的主键。

对应自动生成实体类的代码如下:

  • Student.cs
namespace Model
{
    using System;
    using System.Collections.G
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值