Помогите, мыслей больше просто нет...
Есть 2 класса
public class DovKlient
{
private ISet keyPodatDeclarAddFive;
public virtual string Subjid { get; set; }
public virtual string Codenalog { get; set; }
public virtual string Subjname { get; set; }
public virtual string SubjAddr { get; set; }
public virtual string TaxPayerCode { get; set; }
public virtual string Okpo { get; set; }
public virtual int Mfo { get; set; }
public virtual byte Rezident { get; set; }
public virtual ISet KeyPodatDeclarAddFive
{
get
{
if (keyPodatDeclarAddFive == null)
return keyPodatDeclarAddFive = new HashedSet();
return keyPodatDeclarAddFive;
}
set { keyPodatDeclarAddFive = value; }
}
}
и
public class PDAFId
{
#region Свойства
private int year;
private int month;
private int npp;
private int nsection;
private int nadd;
public virtual int Year
{
get { return year; }
set { year = value; }
}
public virtual int Month
{
get { return month; }
set { month = value; }
}
public virtual int Npp
{
get { return npp; }
set { npp = value; }
}
public virtual int Nsection
{
get { return nsection; }
set { nsection = value; }
}
public virtual int Nadd
{
get { return nadd; }
set { nadd = value; }
}
#endregion
public PDAFId()
{
}
public PDAFId(int year, int month, int npp, int nsection, int nadd)
{
this.year = year;
this.month = month;
this.npp = npp;
this.nsection = nsection;
this.nadd = nadd;
}
public override int GetHashCode()
{
return Npp.GetHashCode();
}
public override bool Equals(object obj)
{
var otherId = obj as PDAFId;
if (otherId == null)
{
return false;
}
if (otherId.Year == Year &&
otherId.Month == Month &&
otherId.Npp == Npp &&
otherId.Nsection == Nsection &&
otherId.Nadd == Nadd)
{
return true;
}
return false;
}
}
public class PodatDeclarAddFive
{
#region Свойства
private PDAFId id;
public virtual PDAFId Id
{
get { return id; }
set { id = value; }
}
public virtual string Subjid { get; set; }
public virtual string Codenalog { get; set; }
public virtual int Year { get; set; }
public virtual int Month { get; set; }
public virtual int Actual { get; set; }
#endregion
public virtual DovKlient KeyDovKlient { get; set; }
public PodatDeclarAddFive ()
{
}
public PodatDeclarAddFive (PDAFId id)
{
if (id == null) throw new System.ArgumentNullException("id");
this.id = id;
}
}
к ним соответственно меппинги
<class name ="PodatDeclarAddFive" table="OPLATA.PODAT_DECLAR_ADD_FIVE" where ="IPN is not null">
<composite-id name ="Id" class="ITN.DataLayer.PDAFId">
<key-property name ="Year" column ="YEAR"/>
<key-property name ="Month" column="MONTH"/>
<key-property name ="Npp" column="N_PP"/>
<key-property name ="Nsection" column="N_SECTION"/>
<key-property name ="Nadd" column="N_ADD"/>
</composite-id>
<property name="Subjid" column="SUBJID" update="false" insert="false" not-null="false" unique="false"/>
<property name="Codenalog" column="IPN" update="false" insert="false" not-null="false" unique="false"/>
<property name="Year" column="YEAR_R" update="false" insert="false" not-null="false" unique="false"/>
<property name="Month" column="MONTH_R" update="false" insert="false" not-null="false" unique="false"/>
<property name="Actual" column="actual" update="false" insert="false" not-null="false" unique="false"/>
<many-to-one name="KeyDovKlient" column="subjid" class="DovKlient"></many-to-one>
</class>
<class name="DovKlient" table="info.dov_klient" where="okpo is not null and codenalog is not null">
<id name="Subjid" column="subjid">
<generator class="native"/>
</id>
<property name="Codenalog" column="codenalog" update="false" insert="false" not-null="false" unique="false"/>
<property name="Subjname" column="subjname" update="false" insert="false" not-null="false" unique="false"/>
<property name="SubjAddr" column="subjaddr" update="false" insert="false" not-null="false" unique="false"/>
<property name="TaxPayerCode" column="TaxPayerCode" update="false" insert="false" not-null="false" unique="false"/>
<property name="Okpo" column="okpo" update="false" insert="false" not-null="false" unique="false"/>
<property name="Mfo" column="mfo" update="false" insert="false" not-null="false" unique="false"/>
<property name="Rezident" column="rezident" update="false" insert="false" not-null="false" unique="false"/>
<set name ="KeyPodatDeclarAddFive" inverse ="true">
<key column ="subjid"></key>
<one-to-many class="PodatDeclarAddFive"/>
</set>
</class>
делаю Named SQL queries
<sql-query name ="querypdaf">
<return alias ="pdaf" class ="PodatDeclarAddFive">
<return-property name="Year" column="Year"></return-property>
<return-property name="Month" column="Month"></return-property>
<return-property name="Subjid" column="Subjid"></return-property>
<return-property name="Codenalog" column="Codenalog"></return-property>
</return>
<return-join alias="dk" property ="pdaf.KeyDovKlient">
<return-property name="Subjname" column="Subjname"></return-property>
<return-property name="SubjAddr" column="Subjaddr"></return-property>
<return-property name="TaxPayerCode" column="TaxPayerCode"></return-property>
<return-property name="Okpo" column="Okpo"></return-property>
</return-join>
select
pdaf.YEAR AS Year,
pdaf.MONTH AS Month,
pdaf.SUBJID AS Subjid,
pdaf.IPN AS Codenalog,
dk.SUBJNAME AS Subjname,
dk.SUBJADDR AS Subjaddr,
dk.TAXPAYERCODE AS TaxPayerCode,
dk.OKPO AS Okpo
from
OPLATA.PODAT_DECLAR_ADD_FIVE as pdaf,
INFO.DOV_KLIENT as dk
where
pdaf.MONTH = 5
and pdaf.IPN is not null
and pdaf.SUBJID = dk.SUBJID
</sql-query>
и при выполнении пишет
DEBUG [2009-06-11 16:53:29,292] — could not execute query
[ select
pdaf.YEAR AS Year,
pdaf.MONTH AS Month,
pdaf.SUBJID AS Subjid,
pdaf.IPN AS Codenalog,
dk.SUBJNAME AS Subjname,
dk.SUBJADDR AS Subjaddr,
dk.TAXPAYERCODE AS TaxPayerCode,
dk.OKPO AS Okpo
from
OPLATA.PODAT_DECLAR_ADD_FIVE as pdaf,
INFO.DOV_KLIENT as dk
where
pdaf.MONTH = 5
and pdaf.IPN is not null
and pdaf.SUBJID = dk.SUBJID ]
NHibernate.Util.ADOExceptionReporter.LogExceptions(:0)
System.IndexOutOfRangeException: YEAR0_0_
в System.Data.ProviderBase.FieldNameLookup.GetOrdinal(String fieldName)
в System.Data.Odbc.OdbcDataReader.GetOrdinal(String value)
в NHibernate.Type.NullableType.NullSafeGet(IDataReader rs, String name)
в NHibernate.Type.NullableType.NullSafeGet(IDataReader rs, String[] names, ISessionImplementor session, Object owner)
в NHibernate.Type.AbstractType.Hydrate(IDataReader rs, String[] names, ISessionImplementor session, Object owner)
в NHibernate.Type.ComponentType.Hydrate(IDataReader rs, String[] names, ISessionImplementor session, Object owner)
в NHibernate.Type.ComponentType.NullSafeGet(IDataReader rs, String[] names, ISessionImplementor session, Object owner)
в NHibernate.Loader.Loader.GetKeyFromResultSet(Int32 i, ILoadable persister, Object id, IDataReader rs, ISessionImplementor session)
в NHibernate.Loader.Loader.GetRowFromResultSet(IDataReader resultSet, ISessionImplementor session, QueryParameters queryParameters, LockMode[] lockModeArray, EntityKey optionalObjectKey, IList hydratedObjects, EntityKey[] keys, Boolean returnProxies)
в NHibernate.Loader.Loader.DoQuery(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies)
в NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies)
в NHibernate.Loader.Loader.DoList(ISessionImplementor session, QueryParameters queryParameters)
WARN [2009-06-11 16:53:29,307] — System.IndexOutOfRangeException: YEAR0_0_
в System.Data.ProviderBase.FieldNameLookup.GetOrdinal(String fieldName)
в System.Data.Odbc.OdbcDataReader.GetOrdinal(String value)
в NHibernate.Type.NullableType.NullSafeGet(IDataReader rs, String name)
в NHibernate.Type.NullableType.NullSafeGet(IDataReader rs, String[] names, ISessionImplementor session, Object owner)
в NHibernate.Type.AbstractType.Hydrate(IDataReader rs, String[] names, ISessionImplementor session, Object owner)
в NHibernate.Type.ComponentType.Hydrate(IDataReader rs, String[] names, ISessionImplementor session, Object owner)
в NHibernate.Type.ComponentType.NullSafeGet(IDataReader rs, String[] names, ISessionImplementor session, Object owner)
в NHibernate.Loader.Loader.GetKeyFromResultSet(Int32 i, ILoadable persister, Object id, IDataReader rs, ISessionImplementor session)
в NHibernate.Loader.Loader.GetRowFromResultSet(IDataReader resultSet, ISessionImplementor session, QueryParameters queryParameters, LockMode[] lockModeArray, EntityKey optionalObjectKey, IList hydratedObjects, EntityKey[] keys, Boolean returnProxies)
в NHibernate.Loader.Loader.DoQuery(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies)
в NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies)
в NHibernate.Loader.Loader.DoList(ISessionImplementor session, QueryParameters queryParameters)
NHibernate.Util.ADOExceptionReporter.LogExceptions(:0)
ERROR [2009-06-11 16:53:29,307] — YEAR0_0_
NHibernate.Util.ADOExceptionReporter.LogExceptions(:0)
чуть выше видно, что запрос возвращает 0 записей..,
DEBUG [2009-06-11 16:53:29,260] — select
pdaf.YEAR AS Year,
pdaf.MONTH AS Month,
pdaf.SUBJID AS Subjid,
pdaf.IPN AS Codenalog,
dk.SUBJNAME AS Subjname,
dk.SUBJADDR AS Subjaddr,
dk.TAXPAYERCODE AS TaxPayerCode,
dk.OKPO AS Okpo
from
OPLATA.PODAT_DECLAR_ADD_FIVE as pdaf,
INFO.DOV_KLIENT as dk
where
pdaf.MONTH = 5
and pdaf.IPN is not null
and pdaf.SUBJID = dk.SUBJID
NHibernate.AdoNet.AbstractBatcher.LogCommand(:0)
DEBUG [2009-06-11 16:53:29,260] — Enlist Command
NHibernate.Transaction.AdoTransaction.Enlist(:0)
DEBUG [2009-06-11 16:53:29,276] — Opened IDataReader, open IDataReaders: 1
NHibernate.AdoNet.AbstractBatcher.LogOpenReader(:0)
DEBUG [2009-06-11 16:53:29,276] — processing result set
NHibernate.Loader.Loader.DoQuery(:0)
DEBUG [2009-06-11 16:53:29,276] — result set row: 0 (!!!!!!!!!)
NHibernate.Loader.Loader.DoQuery(:0)
DEBUG [2009-06-11 16:53:29,292] — Closed IDataReader, open IDataReaders :0
NHibernate.AdoNet.AbstractBatcher.LogCloseReader(:0)
DEBUG [2009-06-11 16:53:29,292] — Closed IDbCommand, open IDbCommands: 0
NHibernate.AdoNet.AbstractBatcher.LogClosePreparedCommand(:0)
но если выполнять в интерактиве,то он возвращает много записей, а не 0
вот в чем вопрос.., почему запрос возвращает 0 записей...???