SQL table 至 类

SQL table to classes

我有一个建模问题需要帮助理解。

我有一个叫 Employee 的 table 和一个叫 Office 的 table。 类 之间存在一对多关系(1 个员工有一个办公室,一个办公室有多个员工)。

目标是从那些 table 中创建 类,我找到了两种方法:

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

您可以通过以下方式创建这些 table(或使用 entity framework 为您创建 table):

// Office table             // Employee table
-----------------           ----------------------------------
| Id(PK) | Name | --------> | Id(PK) | OfficeId(FK) | Name |  
-----------------           ----------------------------------

// PK: Primary Key
// FK: Foreign Key

one-to-many 关系通过 employee table 中的 FK 表示,employee 有一个 FK 到办公室he/she 属于哪里。然后,通过使用简单的 joins,您可以从 table 中获取所需的所有信息。例如

获得 office

的全部 employees
    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

如果您使用第一种方法,这会有点复杂。