2009-03-16 6 views
0

У меня есть заявление ADO.NET Я хочу, чтобы преобразовать использовать NHibernate:nHibernate выбрать запрос?

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)

Учитывая, я хочу вернуть: IList (Of AspnetRole)

и я использую:

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

Как построить и использовать этот запрос с помощью nHiberate?

(P.S. Я использую Codesmithtools и VB.NET и VS2008 и SQL Server 2008)

+0

не совсем ответ, но не использовать StringBuilder что-то вроде этого ... –

ответ

1

Первое, вы должны отобразить таблицу aspnet_roles и таблицу MenuRole их соответствующих классов. После того как вы их сопоставили, я также сопоставлял свойство MenuRole много-к-одному с классом AspnetRole.

После того, как вы сделали, что запрос критерии должны выглядеть следующим образом:

Dim c As ICriteria = Session.CreateCriteria(TypeOf(AspnetRole)) 
c.Add(Restrictions.Eq("Menu.Id", menuId) 
return c.List(Of AspnetRole) 
Смежные вопросы