I never use field, always auto properties. As you know, field doesn't work 
with lazy properties.

RP

On Wednesday, February 26, 2014 8:47:39 AM UTC, Alexander I. Zaytsev wrote:
>
> I think it is better to change access in mapping to "field"
>
>
> 2014-02-25 22:54 GMT+13:00 Ricardo Peres <[email protected] <javascript:>>:
>
>> For collections, you can instantiate them in the constructor:
>>
>> this.Budgets = new List<Budget>();
>>
>> RP
>>
>>
>> On Tuesday, February 25, 2014 9:06:59 AM UTC, Ricardo Peres wrote:
>>>
>>> Well, you are returning a list which encapsulates a read-only 
>>> collection!!
>>> Replace all your fields with auto properties:
>>>
>>> * public string InvestmentTypeNote {*
>>> *            get;*
>>> *            set;*
>>> *        }*
>>> *        public IList<Budget> Budgets {*
>>> *            get;*
>>> *            protected set;*
>>> *        }*
>>>
>>> This will solve your problem.
>>>
>>> RP
>>>
>>>
>>> On Tuesday, February 25, 2014 2:15:30 AM UTC, Veasna MUCH wrote:
>>>>
>>>> When I update xml schmas in budget.hbm.xml as your suggestion 
>>>>
>>>>
>>>>> *    <many-to-one name="oAirport" column="AirportID"*
>>>>> *      class="Tec.Core.Model.Airport, Tec.Core" not-null="true" 
>>>>> cascade="save-update"/> *
>>>>> *    <many-to-one name="oInvestmentCode" column="InvestmentCodeID"*
>>>>> *      class="Tec.Core.Model.InvestmentCode, Tec.Core" not-null="true" 
>>>>> cascade="save-update"/> *
>>>>> *    <many-to-one name="oInvestmentType" column="InvestmentTypeID"**  
>>>>>     class="Tec.Core.Model.InvestmentType, Tec.Core" not-null="true" 
>>>>> cascade="save-update"/>  *
>>>>
>>>>     
>>>>
>>>> I got the following exception class InvestmentCode.cs
>>>> ------------------------------------------------------------
>>>> ------------------------------------------------------------
>>>>
>>>> *public void AddBudget(Budget imntBudget){*
>>>> *            if (imntBudget != null && 
>>>> !_lInvestmentCodeBudgets.Contains(imntBudget)){*
>>>> *                imntBudget.oInvestmentCode = this;*
>>>>
>>>> *                _lInvestmentCodeBudgets.Add(imntBudget); 
>>>>  // System.NotSupportedException : Collection is read-only*
>>>> *            }*
>>>> *        }*
>>>>
>>>> I do not know what going on here again.
>>>>
>>>> Any suggestion?
>>>>
>>>> Best regards,
>>>>
>>>>  Veasna
>>>>
>>>>
>>>>
>>>> On Monday, February 24, 2014 10:57:38 PM UTC+7, Ricardo Peres wrote:
>>>>>
>>>>> Try this:
>>>>>
>>>>> <many-to-one name="oInvestmentType" column="InvestmentTypeID"
>>>>>       class="Tec.Core.Model.InvestmentType, Tec.Core" not-null="true" 
>>>>> cascade="save-update" 
>>>>> />  
>>>>>
>>>>> On Monday, February 24, 2014 11:33:12 AM UTC, Veasna MUCH wrote:
>>>>>>
>>>>>>
>>>>>> 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] <javascript:>.
>> To post to this group, send email to [email protected]<javascript:>
>> .
>> Visit this group at http://groups.google.com/group/nhusers.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>
>

-- 
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.

Reply via email to