c# - SQL 表到类
问题描述
我有一个需要帮助理解的建模问题。
我有一张名为 Employee 的表和一张名为 Office 的表。类之间存在一对多的关系(1 个员工有一个办公室,一个办公室有多个员工)。
目标是从这些表中创建类,我找到了两种方法:
1:
public class Employee
{
private string Name { get; set; }
private Office Office { get; set; }
}
public class Office
{
private string OfficeName { get; set; }
}
2:
public class Employee
{
private string Name {get; set;}
}
public class Office
{
private string OfficeName { get; set; }
private List<Employee>Employees { get; set; }
}
哪种方法是建模的正确方法?
解决方案
我发现第二种方法更容易使用(更自然)。原因是,当您以这种方式建模数据时:
public Class Employee
{
string Name {get; set;}
}
public Class Office
{
string OfficeName {get; set}
List<Employee>Employees {get; set}
}
您可以通过以下方式创建这些表(或使用实体框架为您创建表):
// Office table // Employee table
----------------- ----------------------------------
| Id(PK) | Name | --------> | Id(PK) | OfficeId(FK) | Name |
----------------- ----------------------------------
// PK: Primary Key
// FK: Foreign Key
one-to-many
关系通过表格FK
中的表示,并且与他/她所属的办公室有联系。然后通过使用简单,您可以从表格中获取所需的所有信息。例如employee
employee
FK
joins
employees
得到所有office
SQL: SELECT Offices.OfficeId, Offices.Name, Employees.Name
FROM Offices
JOIN Employees ON Offices.Id = Employees.OfficeId
WHERE Offices.Name = 'some_name'
// Or you can use LINQ had you had used Entity Framework
如果您使用第一种方法,这会有点复杂。
推荐阅读
- swift - 如何启用使用键盘快捷键粘贴到 SwiftUI macOS 代理应用程序
- python - 如何在python中关闭函数中的图?
- arrays - Rails 表单:如何存储(和检索)数组?
- python - 有没有办法将分页与 django-filter 一起使用?
- javascript - 从 Nuxt.js 到外部 API 的 axios 发布请求出现问题
- node.js - 如何使用node js删除目录中的所有旧文件
- java - 在 Android 设备上安装时运行的应用程序崩溃
- java - 以通用功能接口为参数的模拟方法 - Mockito
- javascript - 使用 daterangepicker 中的日期数据自动提交表单
- bbedit - 您可以在 BBEdit 的选项卡中打开文档吗?