To further my question:
The problematic type is defined as:
Code:
private NullableDateTime _pVer_Date;
public virtual NullableDateTime PVer_Date
{
get { return _pVer_Date; }
set { _pVer_Date = value; }
}
My mapping:
Code:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.0">
<class name="Duke.DIMPLE2.NHibernate.Product, Duke.DIMPLE2" table="STO_Product">
<id name="Prod_Code" column="Prod_Code" type="String" length="20">
<generator class="assigned" />
</id>
<property name="Prod_Name" column="Prod_Name" type="String" length="40"/>
<property name="Prod_DisplayName" type="String" length="20"/>
<property name="Prod_Description" type="String" length="40"/>
<property name="PInt_Code" type="String" length="20" />
<property name="Prod_Length" type="String" length="20" />
<property name="PGro_Code" type="String" length="20" />
<property name="Prod_Certificate" type="String" length="20" />
<property name="PSta_Code" type="String" length="20" />
<property name="Prod_AudioCode" type="String" length="20" />
<property name="Prod_Status" type="String" length="20" />
<property name="Prod_PIntCode" type="String" length="20" />
<property name="sku" type="String" length="20" />
<property name="PCat_Code" type="String" length="20" />
<property name="PVer_Date" type="Nullables.NullableDateTime, Nullables" />
<property name="Prod_LengthUnit" type="String" length="20" />
<property name="Proj_Code" type="string" length="20" />
</class>
</hibernate-mapping>
I got the following exception:
Code:
NHibernate.ADOException: Could not cast the value in field PVer_Date0_ of type DateTime to the Type SerializableType. Please check to make sure that the mapping is correct and that your DataProvider supports this Data Type. ---> System.InvalidCastException: Invalid attempt to GetBytes on column 'PVer_Date0_'. The GetBytes function can only be used on columns of type Text, NText, or Image.
at System.Data.SqlClient.SqlDataReader.GetBytes(Int32 i, Int64 dataIndex, Byte[] buffer, Int32 bufferIndex, Int32 length)
at NHibernate.Driver.NHybridDataReader.GetBytes(Int32 i, Int64 fieldOffset, Byte[] buffer, Int32 bufferoffset, Int32 length)
at NHibernate.Type.BinaryType.Get(IDataReader rs, Int32 index)
at NHibernate.Type.SerializableType.Get(IDataReader rs, Int32 index)
at NHibernate.Type.NullableType.NullSafeGet(IDataReader rs, String name)
--- End of inner exception stack trace ---
at NHibernate.Type.NullableType.NullSafeGet(IDataReader rs, String name)
at NHibernate.Type.NullableType.NullSafeGet(IDataReader rs, String[] names, ISessionImplementor session, Object owner)
at NHibernate.Type.AbstractType.Hydrate(IDataReader rs, String[] names, ISessionImplementor session, Object owner)
at NHibernate.Loader.Loader.Hydrate(IDataReader rs, Object id, Object obj, ILoadable persister, ISessionImplementor session, String[][] suffixedPropertyColumns)
at NHibernate.Loader.Loader.LoadFromResultSet(IDataReader rs, Int32 i, Object obj, Key key, String suffix, LockMode lockMode, ILoadable rootPersister, ISessionImplementor session)
at NHibernate.Loader.Loader.InstanceNotYetLoaded(IDataReader dr, Int32 i, ILoadable persister, String suffix, Key key, LockMode lockMode, Key optionalObjectKey, Object optionalObject, IList hydratedObjects, ISessionImplementor session)
at NHibernate.Loader.Loader.GetRow(IDataReader rs, ILoadable[] persisters, String[] suffixes, Key[] keys, Object optionalObject, Key optionalObjectKey, LockMode[] lockModes, IList hydratedObjects, ISessionImplementor session)
at NHibernate.Loader.Loader.GetRowFromResultSet(IDataReader resultSet, ISessionImplementor session, QueryParameters queryParameters, IList hydratedObjects, Object optionalObject, Object optionalId, Key[] keys, Boolean returnProxies)
at NHibernate.Loader.Loader.DoQuery(ISessionImplementor session, QueryParameters queryParameters, Object optionalObject, Object optionalId, Object[] optionalCollectionKeys, Boolean returnProxies)
at NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor session, QueryParameters queryParameters, Object optionalObject, Object optionalId, Object[] optionalCollectionKeys, Boolean returnProxies)
at NHibernate.Loader.Loader.List(ISessionImplementor session, QueryParameters queryParameters, ISet querySpaces, IType[] resultTypes)
at NHibernate.Loader.CriteriaLoader.List(ISessionImplementor session)
at NHibernate.Impl.SessionImpl.Find(CriteriaImpl criteria)
at NHibernate.Impl.CriteriaImpl.List()
at Duke.DIMPLE2.ASPNET.WebServices.API.ProductBroker.GetProducts(String code, String name) in c:\Inetpub\DIMPLE2\App_Code\ProductBroker.cs:line 45
I am using the Nullables.NullableDateTime type.