我在我的「用戶」表中關係到部門,角色和團隊。如何以正確的方式檢索存儲庫模式中的關係數據?
建議是當我通過存儲庫查詢數據時,所以我更願意返回「用戶」模型,填寫部門,角色和團隊的完整對象和屬性。
我目前的解決方案是使用服務層從相關存儲庫(UserService.cs)設置用戶屬性。我的項目有服務層(Service),數據層(Repository)和域模型(Domain Model)。
請參閱下面的示例代碼:
型號/ User.cs
public class User{
public string username { get; set; }
public string firstname { get; set; }
public string surname { get; set; }
public Int32 DepartmentId { get; set; }
public Department Department { get; set; }
public Int32 RoleId { get; set; }
public Role Role { get; set; }
public IList<Team> Teams { get; set; }
}
庫/ UserRepository.cs
public class UserRepository : IUserRepository{
private sqlSelectStatement = String.Format(@"SELECT u.[Id]
,[UserName]
,[FirstName]
,[LastName]
,[Email]
,[Telephone]
,[DepartmentId]
,[TeamId]
,[RoleId]
,[Enabled]
,[Created]
,[Modified]
,[UpdatedBy]
FROM {0}[User] ", SchemaOwner);
public IEnumerable<User> GetAll()
{
var dbcommand = this.SessionContext.GetSqlCommand(sqlSelectStatement);
return this.SessionContext.GetList<User>(dbcommand);
}
}
服務/ UserService.cs
public class UserService : IUserService
{
private IUserRepository userRepository;
private ITeamRepository teamRepository;
private IDepartmentRepository departmentRepository;
private IRoleRepository roleRepository;
public IEnumerable<User> GetAll()
{
var users = userRepository.GetAll();
var departments = departmentRepository.GetAll();
var teamMembers = teamMemberRepository.GetAll();
var roles= roleRepository.GetAll();
foreach (User user in users){
user.Department = departments.Where(department=>department.Id== user.departmentId);
user.Role = roles.Where(role=>role.Id== user.roleId);
user.Teams = teams.where(team=>team.UserId == user.Id);
}
}
}
請注意,我沒有使用任何「ORM」的框架和我沒有任何計劃使用的「ORM」
歡迎來到Stack Overflow!與論壇網站不同,我們不使用「謝謝」或「任何幫助表示讚賞」,或在[so]上簽名。請參閱「[應該'嗨','謝謝',標語和致敬從帖子中刪除?](http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be -removed - 從 - 個)。 –