Weel,因爲我想保持我的實體清潔,沒有任何數據庫查找我不能這樣做,就像你擁塞。
我做我的實體是這樣的:
角色實體
public class Role(){
public int RoleId { get; set; }
public string Rolename { get; set; }
public string Description { get; set; }
public IList<User> Users { get; set; }
public Role()
{
RoleId = 0;
Rolename = "";
Description = "";
Users = new List<User>();
}
}
用戶實體
public class User(){
public int UserId { get; set; }
public string Username { get; set; }
public string Password { get; set; }
public string Email { get; set; }
public User()
{
UserId = 0;
Username = "";
Password = "";
Email = "";
}
}
用戶和角色的實體
public class UsersAndRoles(){
public int Id { get; set; }
public int UserId { get; set; }
public int RoleId { get; set; }
public UsersInRoles()
{
Id = 0;
UserId = 0;
RoleId = 0;
}
}
從我的倉庫
現在我試着去做 如下因素:
public IList<Role> GetRolesAndUsers()
{
//--- Load all roles
var roles = base.All<Role>();
//--- Run through all roles and add the users to the roles.
foreach (var role in roles)
{
//--- Load the users in the given role
var users = (from u in base.All<User>()
join ur in base.All<UsersInRoles>() on role.RoleId equals ur.RoleId
where u.UserId == ur.UserId
select u).ToList();
//--- Run through the list of users and add the user to the role
foreach (var user in users)
{
role.Users.Add(user);
}
}
//--- Return roles and users
return roles.ToList();
}
但是用戶不會被添加到該角色,即使我本來可以當我使用調試通過代碼得到了用戶加載。
我在這裏錯過了什麼?
發現我必須加載角色爲.ToList()作爲base.All()返回IQueryable; o) 所以我改變base.All ()基地。所有().ToList()和一切工作就像一個魅力; o) –
2009-12-20 21:18:53
我不知道你的意思是我的方法需要數據庫查找(這兩種情況下,你是從IQueryable對象創建一個列表),但如果你已經完成的作品,對你有意義,然後去做。我仍然認爲我的方法會更容易壽;) – woopstash 2009-12-21 18:04:44
在上面你做的實體做這個「_User = this.Users.SingleOrDefault();」你不從數據庫中加載一個用戶嗎? – 2009-12-22 08:16:52