entity framework:获取Repository中的Subclass对象
我有以下模型对应于下面列出的数据库表。
经理是员工。 会计师也是雇员。
- 获取存储库中所有管理器的最佳方法是什么? 如何实现GetAllManagers()方法?
- TPT是否合适?
码
MyRepository.MyEmployeeRepository rep = new MyEmployeeRepository(); List 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 GetAllEmployees() { List employees = new List(); using (var context = new MyEntityDataModelEDM.LibraryReservationSystemEntities1(connectionStringVal)) { foreach (MyEntityDataModelEDM.Employee p in context.Employees) { employees.Add(p); } } return employees; } public List GetAllManagers() { List managers = new List(); using (var context = new MyEntityDataModelEDM.LibraryReservationSystemEntities1(connectionStringVal)) { } return managers; } }
编辑
这种模式有缺点。 它应该考虑以下:
- 可以为他创建没有任何角色的员工。
- 一名员工可以拥有多个角色。
做就是了:
return context.Employees.OfType().ToList()
然而,这是对员工进行建模的一种非常糟糕的方式。如果会计师更改了工作,您需要杀死并重新创建该对象。
请参阅我在域模型中的inheritance与枚举属性的答案。