首页 > 解决方案 > 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; }
}

哪种方法是建模的正确方法?

标签: c#object-model

解决方案


我发现第二种方法更容易使用(更自然)。原因是,当您以这种方式建模数据时:

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中的表示,并且与他/她所属的办公室有联系。然后通过使用简单,您可以从表格中获取所需的所有信息。例如employeeemployeeFKjoins

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

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


推荐阅读