2009-03-16 6 views
0

私はNHibernateはを使用して変換したいado.net文を持っている:nHibernate selectクエリ?

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") 

後に、私は、パラメータを移入: cmd.Parameters.AddWithValue( "menuID属性@"、menuID属性)

私は返すようにしたい考える:

(AspnetRoleの)のIListをし、私が使用している:

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

がどのように構築するかとnHiberateでそのクエリを使用しますか?

(私はCodesmithtoolsとVB.netとVS2008を使用していますP.S.およびSQL Server 2008)

+0

ない、本当に答えを、このような何かのためのStringBuilderを使用していません... –

答えて

1

まず、あなたはそれに対応するクラスにaspnet_rolesテーブルとMenuRoleテーブルをマッピングする必要があると思います。いったんマップしたら、多対1のMenuRoleプロパティをAspnetRoleクラスにマップします。

あなたが基準のクエリは、このようなものになりますことをやったら:

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