Good afternoon,
I have following database schemas
<https://lh4.googleusercontent.com/-TnjRxHcktjM/UwscRDvMOGI/AAAAAAAABx4/_6XhBJFgic4/s1600/ER+Diagram.JPG>
Here is my mapping file
*Airport*
-----------------------------------------------------------
<?xml version="1.0" encoding="utf-8" ?>
> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
> <class name="Tec.Core.Model.Airport, Tec.Core" table="tblAirport"
> lazy="false">
> <id name="ID" column="AirportID" unsaved-value="0">
> <generator class="identity" />
> </id>
> <property name="AirportCode" column="AirportCode" />
> <property name="AirportFullName" column="AirportFullName" />
>
> <bag name="Budgets" table="tblBudget" inverse="true"
> cascade="save-update">
> <key column="AirportID" />
> <one-to-many class="Tec.Core.Model.Budget, Tec.Core" />
> </bag>
>
> </class>
> </hibernate-mapping>
* public class Airport:Entity<int> *
* {*
* private string _airportCode="";*
* private string _airportFullName="";*
* private IList<Budget> _airportBudgets = new List<Budget>();*
* private Airport() { }*
* public Airport(string AirportCode, string AirportFullName) {*
* this._airportCode = AirportCode;*
* this._airportFullName = AirportFullName; *
* }*
* public string AirportCode** {*
* get { return _airportCode; }*
* set { _airportCode = value; }*
* }*
* public string AirportFullName** {*
* get { return _airportFullName; }*
* set { _airportFullName = value; }*
* }*
* public IList<Budget> Budgets** {*
* get { return new List<Budget>(_airportBudgets).AsReadOnly(); }*
* protected set { _airportBudgets = value; }*
* }*
* public void AddBudget(Budget air_budget)**{*
* if (air_budget != null &&
!_airportBudgets.Contains(air_budget)){*
* air_budget.oAirport = this; *
* _airportBudgets.Add(air_budget);*
* }*
* }*
* public override int GetHashCode(){*
* return (GetType().FullName + "|" +
_airportCode.GetHashCode()).GetHashCode();*
* }*
* }*
InvestmentCode
--------------------------------------------------------------
<?xml version="1.0" encoding="utf-8" ?>
> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
> <class name="Tec.Core.Model.InvestmentCode, Tec.Core"
> table="tblInvestmentCode" lazy="false">
> <id name="ID" column="InvestmentCodeID" unsaved-value="0">
> <generator class="identity" />
> </id>
> <property name="InvCode" column="InvestmentCode" />
> <property name="InvCodeNote" column="InvestmentCodeNote" />
>
> <bag name="Budgets" table="tblBudget" inverse="true"
> cascade="save-update">
> <key column="InvestmentCodeID" />
> <one-to-many class="Tec.Core.Model.Budget, Tec.Core" />
> </bag>
>
> </class>
> </hibernate-mapping>
* public class InvestmentCode: Entity<int> *
* {*
* private string _investmentCode="";*
* private string _investmentCodeNote="";*
* private IList<Budget> _lstinvestmentCodeBudgets = new
List<Budget>();*
* private InvestmentCode() { }*
* public InvestmentCode(string investmentCode, string
InvestmentCodeNote) {*
* this._investmentCode = investmentCode;*
* this._investmentCodeNote = InvestmentCodeNote ; *
* } *
* public string InvCode {*
* get { return _investmentCode ; }*
* set { _investmentCode = value; }*
* }*
* public string InvCodeNote {*
* get { return _investmentCodeNote ; }*
* set { _investmentCodeNote = value; }*
* }*
* public IList<Budget> Budgets {*
* get { return new
List<Budget>(_lstinvestmentCodeBudgets).AsReadOnly(); }*
* protected set { _lstinvestmentCodeBudgets = value; }*
* }*
* public void AddBudget(Budget investment_code_budget) {*
* if (investment_code_budget != null &&
!_lstinvestmentCodeBudgets.Contains(investment_code_budget)){*
* investment_code_budget.oInvestmentCode = this; *
* _lstinvestmentCodeBudgets.Add(investment_code_budget);*
* }*
* } *
* public override int GetHashCode(){*
* return (GetType().FullName +"|"+
_investmentCode.GetHashCode()).GetHashCode();*
* }*
* }*
InvestmentType
-------------------------------------------------------------------------------
<?xml version="1.0" encoding="utf-8" ?>
> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
> <class name="Tec.Core.Model.InvestmentType, Tec.Core"
> table="tblInvestmentType" lazy="false">
> <id name="ID" column="InvestmentTypeID" unsaved-value="0">
> <generator class="identity" />
> </id>
> <property name="InvestmentTypeNote" column="InvestmentTypeNote" />
>
> <bag name="Budgets" table="tblBudget" inverse="true"
> cascade="save-update">
> <key column="InvestmentTypeID" />
> <one-to-many class="Tec.Core.Model.Budget, Tec.Core" />
> </bag>
>
> </class>
> </hibernate-mapping>
* public class InvestmentType: Entity<int> **{*
* private string _investmentTypeNote="";*
* private IList<Budget> _lstInvestmentTypeBudgets = new
List<Budget>();*
* private InvestmentType() { }*
* public InvestmentType(string InvestmentTypeNote){ *
* this._investmentTypeNote = InvestmentTypeNote ; *
* }*
* public string InvestmentTypeNote {*
* get { return _investmentTypeNote ; }*
* set { _investmentTypeNote = value; }*
* }*
* public IList<Budget> Budgets {*
* get { return new
List<Budget>(_lstInvestmentTypeBudgets).AsReadOnly(); }*
* protected set { _lstInvestmentTypeBudgets = value; }*
* }*
* public void AddBudget(Budget investment_type_budget) {*
* if (investment_type_budget != null &&
!_lstInvestmentTypeBudgets.Contains(investment_type_budget)){*
* investment_type_budget.oInvestmentType = this; *
* _lstInvestmentTypeBudgets.Add(investment_type_budget);*
* }*
* }*
* public override int GetHashCode(){*
* return (GetType().FullName + "|"+
_investmentTypeNote.GetHashCode()).GetHashCode();*
* }*
* }*
Budget
------------------------------------------------------------------------
<?xml version="1.0" encoding="utf-8" ?>
> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
> <class name="Tec.Core.Model.Budget, Tec.Core" table="tblBudget"
> lazy="false">
> <id name="ID" column="BudgetID" unsaved-value="0">
> <generator class="identity" />
> </id>
> <property name="BudgetAmount" column="BudgetAmount" />
> <property name="BudgetYear" column="BudgetYear" />
>
> <many-to-one name="oAirport" column="AirportID"
> class="Tec.Core.Model.Airport, Tec.Core" not-null="true" />
> <many-to-one name="oInvestmentCode" column="InvestmentCodeID"
> class="Tec.Core.Model.InvestmentCode, Tec.Core" not-null="true" />
> <many-to-one name="oInvestmentType" column="InvestmentTypeID"
> class="Tec.Core.Model.InvestmentType, Tec.Core" not-null="true" />
>
> </class>
> </hibernate-mapping>
* public class Budget:Entity<long> *
* {*
* private float _budgetAmount;*
* private int _budgetYear;*
* private InvestmentType _investmentType;*
* private InvestmentCode _investmentCode;*
* private Airport _airport;*
* public Budget() { }*
* public float BudgetAmount** {*
* get{return _budgetAmount; }*
* set{_budgetAmount = value;}*
* }*
* public int BudgetYear** {*
* get{return _budgetYear; }*
* set{_budgetYear = value;}*
* }*
* public Airport oAirport**{*
* get{return _airport; }*
* set{_airport = value;}*
* }*
* public InvestmentType oInvestmentType{*
* get{return _investmentType; }*
* set{_investmentType = value;}*
* }*
* public InvestmentCode oInvestmentCode {*
* get{return _investmentCode ; }*
* set{_investmentCode = value;}*
* }*
* public override int GetHashCode(){*
* return (GetType().FullName + "|" + _airport.GetHashCode()
+"|"+ _investmentCode.GetHashCode()+"|"+
_investmentType.GetHashCode()).GetHashCode();*
* }*
* }*
And in my Default.asp.cs
I have following code :
Airport objA = new Airport("NA", "New Airport")
InvestmentCode objIC = new InvestmentCode("1000", "ABCD");
InvestmentType objIT = new InvestmentType("Capex");
Budget objBg = new Budget();
objBg.oAirport = objA;
objBg.oInvestmentCode = objIC;
objBg.oInvestmentType = objIT;
objBg.BudgetAmount = 10000;
objBg.BudgetYear = 2014;
objA.AddBudget(objBg);
AirportDao.SaveOrUpdate(objA);
objIC.AddBudget(objBg);
* daoFactory.**GetInvestmentCodeDao()**.Save(*objIC*); //Error
occur here **not-null property references a null or transient value
Tec.Core.Model.Budget.oInvestmentType*
objIT.AddBudget(objBg);
daoFactory.GetInvestmentTypeDao().Save(objIT);
I have no idea what going on to these problem. I am very new to NHibernate
and would like to start using this in my development.
Could you please guide me how to solve this problem?
Best regards,
Veasna
--
You received this message because you are subscribed to the Google Groups
"nhusers" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/nhusers.
For more options, visit https://groups.google.com/groups/opt_out.