0

我有以下模型對應於下面列出的數據庫表。實體框架:獲取存儲庫中的子類對象

經理是員工。會計師也是一名員工。

  1. 什麼是最好的方法來獲取存儲庫中的所有管理人員?如何實現GetAllManagers()方法?
  2. TPT是否合適?

enter image description here

CODE

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. 一名員工可以有多個角色。
+0

該模型有缺陷。應該考慮以下幾點: 員工可以爲他創建沒有任何角色。 一名員工可以擁有多個角色。 – Lijo 2012-07-27 14:30:23

回答

2

只要做到:

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

然而,這是對員工進行建模一個非常糟糕的方式。如果會計師變化的工作,你需要殺掉並重新創建該對象..

見我回答於Inheritance vs enum properties in the domain model

+0

我會使用角色來做,例如員工或人員可以分配一組角色。 – 2012-07-27 08:52:14

+1

並讓行爲代替角色,這樣,您不必在每次獲得新職位時都殺死每個員工。 – 2012-07-27 08:52:57

+1

此外,經理和會計師的行爲可能屬於不同的有界上下文。 – 2012-07-27 08:56:34