-1

我有以下模型对应于下面列出的数据库表。

经理是雇员。会计师也是雇员。

  1. 在存储库中获取所有管理器的最佳方法是什么?如何实现 GetAllManagers() 方法?
  2. 它是正确的TPT吗?

在此处输入图像描述

代码

MyRepository.MyEmployeeRepository rep = new MyEmployeeRepository();
List<Employee> e = rep.GetAllEmployees();



public class MyEmployeeRepository
{
    private string connectionStringVal;
    public MyEmployeeRepository()
    {
        SqlConnectionStringBuilder sqlBuilder = new SqlConnectionStringBuilder();
        sqlBuilder.DataSource = ".";
        sqlBuilder.InitialCatalog = "LibraryReservationSystem";
        sqlBuilder.IntegratedSecurity = true;

        // Initialize the EntityConnectionStringBuilder.
        EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder();
        entityBuilder.Provider = "System.Data.SqlClient";
        entityBuilder.ProviderConnectionString = sqlBuilder.ToString();
        entityBuilder.Metadata = @"res://*/Test.csdl|res://*/Test.ssdl|res://*/Test.msl";

        connectionStringVal = entityBuilder.ToString();


    }


    public List<Employee> GetAllEmployees()
    {

        List<Employee> employees = new List<Employee>();
        using (var context = new MyEntityDataModelEDM.LibraryReservationSystemEntities1(connectionStringVal))
        {
            foreach (MyEntityDataModelEDM.Employee p in context.Employees)
            {
                employees.Add(p);
            }
        }

        return employees;
    }

    public List<Manager> GetAllManagers()
    {

        List<Manager> managers = new List<Manager>();
        using (var context = new MyEntityDataModelEDM.LibraryReservationSystemEntities1(connectionStringVal))
        {


        }

        return managers;
    }



}

编辑

这个模型有缺点。应考虑以下几点:

  1. 可以在没有任何角色的情况下创建员工。
  2. 一名员工可以担任多个角色。
4

1 回答 1

2

做就是了:

return context.Employees.OfType<Accountant>().ToList()

然而,这是对员工进行建模的一种非常糟糕的方式。如果会计师换工作,您需要杀死并重新创建该对象。

请参阅我对域模型中的继承与枚举属性的回答。

于 2012-07-27T07:48:06.997 回答