Hi All,
Code that I am trying to execute. We have implemented similar way for fetching the data and it is working there.
Background: I have table TBL_Partner_Address and Class PartnerAddress - Table contains composite key with AddressID,AddressType,PartyType and UID
//Partner address table - MAPPING table PartnerAddress objPartnerAddress = new PartnerAddress(); P_Partner_Address objPk = new P_Partner_Address(); objPk.AddressID = 91; objPk.Address_Type = 1; objPk.Party_Type = 5; objPk.UID = 80; objPartnerAddress.Pk_Part_Address = ObjPk; objPartnerAddress.UID = UID; objPartnerAddress.AddressID = AddressID; objPartnerAddress.Address_Type = 3; objPartnerAddress.Party_Type = 5; objPartnerAddress.Status = "OPERATIONAL"; objPartnerAddress.CreatedDate = DateTime.Now; objPartnerAddress.LastUpdatedDate = DateTime.Now;
//Insert data into TBL_PARTNER_ADDRESS int id = objNhiWrap.Save<PartnerAddress>(objPartnerAddress);
Class file:
public class PartnerAddress { [DataMember] private P_Partner_Address _pk_Part_Address;
public virtual P_Partner_Address Pk_Part_Address { get { return _pk_Part_Address; } set { _pk_Part_Address = value; } }
[DataMember] private int _UID; public virtual int UID { get { return _UID; } set { _UID = value; } } [DataMember] private int _addressID; public virtual int AddressID { get { return _addressID; } set { _addressID = value; } } [DataMember] private int _address_Type; public virtual int Address_Type { get { return _address_Type; } set { _address_Type = value; } } [DataMember] private int _party_Type; public virtual int Party_Type { get { return _party_Type; } set { _party_Type = value; } } [DataMember] private string _Status; public virtual string Status { get { return _Status; } set { _Status = value; } } [DataMember] private DateTime _createdDate; public virtual DateTime CreatedDate { get { return _createdDate; } set { _createdDate = value; } } [DataMember] private DateTime _lastUpdatedDate; public virtual DateTime LastUpdatedDate { get { return _lastUpdatedDate; } set { _lastUpdatedDate = value; } } }
/// <summary> /// Class for defining composite Primary Key /// </summary> public class P_Partner_Address { private int _UID; public virtual int UID { get { return _UID; } set { _UID = value; } }
private int _addressID; public virtual int AddressID { get { return _addressID; } set { _addressID = value; } }
private int _address_Type; public virtual int Address_Type { get { return _address_Type; } set { _address_Type = value; } }
private int _party_Type; public virtual int Party_Type { get { return _party_Type; } set { _party_Type = value; } }
public override bool Equals(object obj) { if (obj == null) return false; PartnerAddress p = obj as PartnerAddress; if (p == null) return false; if (this.UID == p.UID && this.AddressID == p.AddressID && this.Address_Type == p.Address_Type && this.Party_Type == p.Party_Type) return true; else return false; }
public override int GetHashCode() { int hash = 13; hash = hash + (null == this.UID.GetHashCode() ? 0 : this.UID.GetHashCode()); hash = hash + (null == this.AddressID.GetHashCode() ? 0 : this.AddressID.GetHashCode()); hash = hash + (null == this.Address_Type.GetHashCode() ? 0 : this.Address_Type.GetHashCode()); hash = hash + (null == this.Party_Type.GetHashCode() ? 0 : this.Party_Type.GetHashCode()); return hash; } }
Mapping file: <?xml version="1.0" ?> - <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Agility.MDM.DAL.BE" assembly="Agility.MDM.DAL.BE"> - <!-- Mappings for class 'Order' --> - <class name="PartnerAddress" table="TBL_PARTNER_ADDRESS" lazy="false"> - <composite-id name="Pk_Part_Address" class="Pk_Partner_Address"> <key-property name="UID" column=""UID"" /> <key-property name="AddressID" column="ADDRESS_ID" /> <key-property name="Address_Type" column="ADDRESS_TYPE" /> <key-property name="Party_Type" column="PARTY_TYPE" /> </composite-id> - <!-- Simple mappings --> <property name="Status" column="STATUS" /> <property name="CreatedDate" column="CREATED_DATE" /> <property name="LastUpdatedDate" column="LASTUPDATEDDATE" /> </class> </hibernate-mapping>
I am getting following Error:
Problem is: We have composite id (4 composite id make primary key) in one of the mapping table. When we try to save data on that table using NHibernate. We are getting following error: “Unable to cast object of type 'Pk_Partner_Address' to type 'System.IConvertible'.”
We have already override method like Equals and GetHashCode to make it compatible with NHibernate
Please guide ASAP. Thanx in advance.
|