2009-03-16 7 views
0

J'ai une déclaration ado.net Je veux convertir utiliser NHibernate:nHibernate sélectionnez une requête?

Dim sql As New StringBuilder() 
sql.AppendLine("SELECT r.RoleId, r.RoleName ") 
sql.AppendLine("FROM dbo.aspnet_Roles r ") 
sql.AppendLine("WHERE r.RoleId IN ") 
sql.AppendLine(" (select roleID from dbo.MenuRole where menuId = @MenuId) ") 
sql.AppendLine("Order By r.RoleName") 

plus tard, je remplir le paramètre avec: cmd.Parameters.AddWithValue ("@ menuID", menuId)

Considérant que je veux retourner un: IList (Of AspnetRole)

et j'utilise:

Dim managerFactory As IManagerFactory = New ManagerFactory() 
Dim roleManager As IAspnetRoleManager = managerFactory.GetAspnetRoleManager() 

Comment puis-je construire et utiliser cette requête avec nHiberate?

(post-scriptum J'utilise Codesmithtools et VB.net et VS2008 et SQL Server 2008)

+0

pas vraiment une réponse, mais ne pas utiliser un stringbuilder pour quelque chose comme ça ... –

Répondre

1

D'abord, vous auriez à cartographier la table aspnet_roles et la table MenuRole à leurs classes correspondantes. Une fois que vous les avez mappés, je mapperais également une propriété MenuRole many-to-one à la classe AspnetRole.

Une fois que vous avez fait que la requête de critères devrait ressembler à ceci:

Dim c As ICriteria = Session.CreateCriteria(TypeOf(AspnetRole)) 
c.Add(Restrictions.Eq("Menu.Id", menuId) 
return c.List(Of AspnetRole) 
Questions connexes