Hello,

because we do not want to force it to be always the last, we want to keep a 
"moving pointer" to the current one.

Thank you
Bruno

On Friday, August 10, 2012 2:01:07 PM UTC-3, fknebels wrote:
>
> I'm not sure why you are trying to do this in the mapping.  
>
> If you just want the last vehicle added why not just map the 
> CurrentVehicle property to something like this
>
> VehicleModel {
> get
> {
> return mVehicleModels[mVehicleModels.Count - 1];
> }
>
> Since you are populating this list already and you only need a reference 
> to the last one in the list.
>
>
> On Fri, Aug 10, 2012 at 12:52 PM, Bruno Sanches 
> <[email protected]<javascript:>
> > wrote:
>
>>  I have a collection of items in one object and I need to keep reference 
>> to the last added item to the collection, so I am doing like this:
>>
>> public class VehicleMap : BaseUniqueNamedEntityMap<Vehicle>
>>
>>
>>
>>     {
>>
>>
>>
>>         public VehicleMap():
>>
>>
>>
>>             base("vehicle_id", 40)
>>
>>
>>
>>         {
>>
>>
>>
>>             Not.LazyLoad();                
>>
>>
>>
>>             //The main collection of items
>>
>>
>>
>>             HasMany(x => x.mVehicleModels)                                   
>>      
>>
>>
>>
>>                 .OrderBy("date asc")
>>
>>
>>
>>                 .Cascade.AllDeleteOrphan()                    
>>
>>
>>
>>                 .LazyLoad()
>>
>>
>>
>>                 .KeyColumn("vehicle_id");
>>
>>
>>
>>             //Always updated to the last added item
>>
>>
>>
>>             References(x => x.mCurrentModel)
>>
>>
>>
>>                 .Column("current_vehicle_model_relation_id")
>>
>>
>>
>>                 .Cascade.None()
>>
>>
>>
>>                 .Not.Nullable();
>>
>>
>>
>>         }
>>
>>
>>
>>     }
>>
>>
>>  And the Vehicle class looks like this:
>>
>>   public class Vehicle : BaseUniqueNamedEntity
>>
>>
>> {        
>>
>>
>>
>>     private IList<VehicleModelItem> mVehicleModels = new 
>> List<VehicleModelItem>();
>>
>>
>>
>>     [NotNull()]
>>
>>
>>
>>     private VehicleModelItem mCurrentModel;
>>
>>
>>
>>     public VehicleModel Model
>>
>>
>>
>>     {
>>
>>
>>
>>         get { return mCurrentModel.VehicleModel; }
>>
>>
>>
>>         set 
>>         {
>>
>>
>>
>>             //Check null before checking if values change, so we catch 
>> exceptions on constructor also
>>
>>
>>
>>             if (value == null)
>>
>>
>>
>>                 throw new ArgumentNullException("Vehicle model cannot be 
>> null");                
>>
>>
>>
>>                 //When model is set, we update current model and insert it 
>> on list
>>
>>
>>
>>                 mCurrentModel = new VehicleModelItem(this, value);
>>
>>
>>
>>                 mVehicleModels.Add(mCurrentModel);
>>
>>
>>
>>                 value.AddVehicleModelItem(mCurrentModel);                    
>>
>>
>>
>>         }
>>
>>
>>
>>     }          
>>
>>
>> }
>>
>>
>>  VehicleModelItem mapping:
>>
>> public VehicleModelItemMap() :
>>
>>
>>
>>             base("vehicle_model_relation_id")
>>
>>
>>
>>         {
>>
>>
>>
>>             Not.LazyLoad();                
>>
>>
>>
>>             References(x => x.mVehicleModel)
>>
>>
>>
>>                 .Column("vehicle_model_id")
>>
>>
>>
>>                 .Cascade.None()
>>
>>
>>
>>                 .LazyLoad(Laziness.Proxy)
>>
>>
>>
>>                 .Not.Nullable();
>>
>>
>>
>>             Map(x => x.mDate)
>>
>>
>>
>>                 .Column("date")
>>
>>
>>
>>                 .Not.Nullable();
>>
>>
>>
>>         }
>>
>>
>>  The problem is, if I create a new vehicle, like:
>>
>> Vehicle vehicle = new Vehicle();
>>
>>
>>
>> vehicle.Model = anyExitingVehicleModel;
>>
>>
>>
>> session.save(vehicle);
>>
>>
>>  I get an "null or transient object set to not null property", in this 
>> case for the property Vehicle in the VehicleModelItem.
>>
>> The problem is related to the mCurrenveVehicleModel property in vehicle, 
>> if I removed it, everything works find, but I could not track the last 
>> added item (at least not by this way).
>>
>> Is there anyway that I can make this work without needing to call save 
>> for both the VehicleModelItem and vehicle?
>>
>> I tried several combinations of Cascade on those collections, but without 
>> success.
>>
>> Thank you
>> Bruno Sanches
>> ========================
>> http://www.pontov.com.br
>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "nhusers" group.
>> To post to this group, send email to [email protected]<javascript:>
>> .
>> To unsubscribe from this group, send email to 
>> [email protected] <javascript:>.
>> For more options, visit this group at 
>> http://groups.google.com/group/nhusers?hl=en.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/nhusers/-/59TqDxRkXq8J.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en.

Reply via email to