Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / NHibernate-2.1.2.GA && NamedQuery / 1 сообщений из 1, страница 1 из 1
14.04.2010, 16:27
    #36578920
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NHibernate-2.1.2.GA && NamedQuery
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
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / NHibernate-2.1.2.GA && NamedQuery / 1 сообщений из 1, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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