powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / NHibernate-2.1.2.GA && NamedQuery
1 сообщений из 1, страница 1 из 1
NHibernate-2.1.2.GA && NamedQuery
    #36578920
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ClassStaff.cs
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
using System;

namespace TestIV
{
	public class ClassStaff
	{
		int
			_ID;

		string
			_Name;

		decimal
			_Salary,
			_SalaryAdd;

		public virtual int ID
		{
			get
			{
				return _ID;
			}
			set
			{
				if (_ID != value)
					_ID = value;
			}
		}

		public virtual string Name
		{
			get
			{
				return _Name;
			}
			set
			{
				if (_Name != value)
					_Name = value;
			}
		}

		public virtual decimal Salary
		{
			get
			{
				return _Salary;
			}
			set
			{
				if (_Salary != value)
					_Salary = value;
			}
		}

		public virtual decimal SalaryAdd
		{
			get
			{
				return _SalaryAdd;
			}
			set
			{
				if (_SalaryAdd != value)
					_SalaryAdd = value;
			}
		}
	}
}

ClassStaff.xbm.xml
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" auto-import="true" namespace="TestIV" assembly="TestIV">

  <class name="ClassStaff" table="Staff" lazy="true">
    <id name="ID">
      <generator class="native" />
    </id>
    <property name="Name" column ="Name"/>
    <property name="Salary" column ="Salary"/>
    <!-- <property name="SalaryAdd" formula="(select s.Salary from Staff s where (s.ID=ID))"/> -->
    
  </class>

  <sql-query name="NamedQuery1">
    <return alias="NamedQuery1" class="TestIV.ClassStaff">
      <return-property name="ID" column="ID"/>
      <return-property name="Name" column="Name"/>
      <return-property name="Salary" column="Salary"/>
      <return-property name="SalaryAdd" column="SalaryAdd"/>
    </return>
    select
      s.*,
      testdb.dbo.SalaryAdd(s.Salary, :pCoeff) as SalaryAdd
    from
      Staff s
    where
      s.ID=:pID
  </sql-query>
</hibernate-mapping>

main.cs
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
using System;
using System.Collections.Generic;
using System.Reflection;
using NHibernate;
using NHibernate.Cfg;

namespace TestIV
{
	class Program
	{
		static ISessionFactory
			SessionFactory;

		static void Main(string[] args)
		{
			try
			{
				using (ISession session = OpenSession())
				{
					IQuery
						query;

					ClassStaff
						tmpClassStaff = session.Get<ClassStaff>( 1 );

					query = session.CreateQuery("select s from ClassStaff s where s.ID in (:ID)");
					query.SetParameterList("ID", new object[] {  1 ,  3 ,  5  });

					List<ClassStaff>
						ClassStaffRecords = (List<ClassStaff>)query.List<ClassStaff>();

					foreach (ClassStaff s in ClassStaffRecords)
					{
						;
					}

					query = session.GetNamedQuery("NamedQuery1");
					query.SetParameter("pID",  3 );
					query.SetParameter("pCoeff",  4 );
					ClassStaffRecords = (List<ClassStaff>)query.List<ClassStaff>();

					foreach (ClassStaff s in ClassStaffRecords)
					{
						;
					}
				}
			}
			catch (Exception e)
			{
				Console.WriteLine(e);
			}
		}

		static ISession OpenSession()
		{
			if (SessionFactory == null)
			{
				Configuration
					configuration = new Configuration();

				configuration.AddAssembly(Assembly.GetCallingAssembly());
				SessionFactory = configuration.BuildSessionFactory();
			}

			return SessionFactory.OpenSession();
		}
	}
}

Запрос отправляется правильно, resultset возвращается, но, вот, SalaryAdd ==0. Почему?
_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / NHibernate-2.1.2.GA && NamedQuery
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]