我有与下面列出的数据库表对应的以下模型。
经理就是雇员。会计师也是雇员。
- 让所有管理器都进入存储库的最佳方法是什么?如何实现GetAllManagers()方法?
- 这是正确的TPT吗?
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;
}
}
EDIT
这种模式有缺点。应考虑以下事项:
- 可以在没有任何角色的情况下创建员工。
- 一名员工可以担任多个角色。
Just do:
return context.Employees.OfType<Accountant>().ToList()
然而,这是一种非常糟糕的员工建模方式。如果会计师换工作,您需要杀死并重新创建该对象。
请参阅我的回答域模型中的继承与枚举属性 https://stackoverflow.com/questions/4254182/inheritance-vs-enum-properties-in-the-domain-model/4254783#4254783.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)