public void Usar_Entidade_User_E_Group_Com_Join_E_Where() { var user = new User("george"); user.Ativo = true; var group = new Group("admin"); group.AddPermissao("can_add_user"); group.AddPermissao("can_remove_user"); group.AddUser(user); ITable t_users = new Table("users"); ITable t_groups = new Table("groups"); t_users.Project(t_users["nome"], t_groups["descricao"]) .Join(t_groups).On(t_users["group_id"] == t_groups["id"]); if (!string.IsNullOrEmpty(user.Nome)) { t_users.Where(t_users["nome"].Like(user.Nome)); } if (user.Ativo.HasValue) { t_users.Where(t_users["ativo"] == user.Ativo); } if (user.Nivel.HasValue) { t_users.Where(t_users["nivel"] == user.Nivel); } if (user.Data.HasValue) { t_users.Where(t_users["data"] > user.Data); } if (group.Permissoes.Count() > 0) { t_users.Where(t_groups["permissoes"].In(group.Permissoes.ToArray())); } string sql_expected = "SELECT users.nome, groups.descricao FROM users JOIN groups ON users.group_id = groups.id " + "WHERE users.nome LIKE @users_nome_1 AND users.ativo = @users_ativo_1 AND users.data > @users_data_1 " + "AND groups.permissoes IN ('can_add_user', 'can_remove_user')"; Assert.AreEqual(sql_expected, t_users.ToSql()); }
public void AddUser(User user) { user.Group = this; _Users.Add(user); }
public void Usar_Entidade_User_Com_Where() { var user = new User("george"); var table_users = new Table("users"); if (!string.IsNullOrEmpty(user.Nome)) { table_users.Where(table_users["nome"].Like(user.Nome)); } if (user.Ativo.HasValue) { table_users.Where(table_users["ativo"] == user.Ativo); } if (user.Data.HasValue) { table_users.Where(table_users["data"] >= user.Data); } if (user.Nivel.HasValue) { table_users.Where(table_users["nivel"] == user.Nivel); } string sql_expected = "SELECT * FROM users WHERE users.nome LIKE @users_nome_1 AND users.data >= @users_data_1"; Assert.AreEqual(sql_expected, table_users.ToSql()); }