It was doing Save, I changed to SaveOrUpdate and still the same.
It is the Vehicle_id in the Asset table, i.e. in the Child.
and here is the config
Vehicle
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default-
access="">
<class name="ThalesAssetTracking.Core.Entities.Vehicle,
ThalesAssetTracking.Core, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=null" table="`Vehicle`" xmlns="urn:nhibernate-
mapping-2.2">
<id name="Id" type="Int32" column="Id">
<generator class="identity" />
</id>
<property name="Name" type="String">
<column name="Name" />
</property>
<property name="Description" type="String">
<column name="Description" />
</property>
<many-to-one name="Image" column="Image_id" />
<many-to-one name="DrawingImage" column="DrawingImage_id" />
<bag name="CurrentAssets">
<key column="Vehicle_id" />
<one-to-many class="ThalesAssetTracking.Core.Entities.Asset,
ThalesAssetTracking.Core, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=null" />
</bag>
</class>
</hibernate-mapping>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default-
access="">
<class name="ThalesAssetTracking.Core.Entities.Asset,
ThalesAssetTracking.Core, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=null" table="`Asset`" xmlns="urn:nhibernate-
mapping-2.2">
<id name="Id" type="Int32" column="Id">
<generator class="identity" />
</id>
<property name="Name" type="String">
<column name="Name" />
</property>
<property name="Number" type="String">
<column name="Number" />
</property>
<many-to-one name="AssetType" column="AssetType_id" />
</class>
</hibernate-mapping>
I am guessing the settings for the one-to-many is wrong?
Cheers, Sarkie.
On Jun 10, 3:54 pm, Hudson Akridge <[email protected]> wrote:
> In your vehicles repository, is the .Add(veh1) calling the
> session.SaveOrUpdate(veh1)? If so, then is the Vehicle_Id column you're
> describing as being empty in the vehicles table or the assets table?
>
> Could you do an .ExportTo() in the config and post the vehicle and asset
> mappings that automapper is generating for you? It's possible that it's
> setting the collection side as an inverse (in NHibernate lingo it means it
> won't save from the parent side of the relationship, it expects the child to
> save the association) You might also try doing this as a bi-directional by
> adding a reference back to vehicle from asset (although you shouldn't have
> to by default).
>
>
>
> On Wed, Jun 10, 2009 at 5:27 AM, Sarkie <[email protected]> wrote:
>
> > Hi Guys,
>
> > Just started a new project and decided I wanted to give Nhibernate a
> > try after trying out Entity Framework, I was told by everyone to use
> > Fluent instead( as well).
>
> > So I am just trying to develop a simple app and I've come across an
> > issue with the AutoMapping, reading the Examples.FirstProject it
> > *should* work, but I am using AutoMapping rather than manually doing
> > it.
>
> > Here is my Parent - Vehicle:
>
> > public class Vehicle
> > {
> > public virtual int Id { get; private set; }
> > public virtual Image Image { get; set; }
> > public virtual Image DrawingImage { get; set; }
> > public virtual string Name { get; set; }
> > public virtual string Description { get; set; }
>
> > public virtual IList<Asset> CurrentAssets {get; private set;}
>
> > public Vehicle()
> > {
> > CurrentAssets = new List<Asset>();
> > }
>
> > public virtual void AddAsset(Asset asset)
> > {
> > CurrentAssets.Add(asset);
> > }
>
> > }
>
> > Here is my Child - Asset
>
> > public class Asset
> > {
> > public virtual int Id { get; private set; }
> > public virtual string Name { get; set; }
> > public virtual string Number { get; set; }
> > }
>
> > Here is my configuration
>
> > FluentConfiguration fs = Fluently.Configure()
> > .Database(MsSqlConfiguration.MsSql2005
> > .ConnectionString(c => c
> > .Server("servername")
> > .Database("dbname")
> > .Username("us")
> > .Password("pw")))
> > .Mappings(m =>
> > m.AutoMappings.Add(
> > AutoPersistenceModel
> > .MapEntitiesFromAssemblyOf<Asset>()
> > .Where(t => t.Namespace ==
> > "AssetTracking.Core.Entities")));
>
> > I then do the insertion:
>
> > UnitOfWork.UnitOfWork.Start();
>
> > Repository<Vehicle> vehicles = new Repository<Vehicle>();
>
> > var veh1Asset = new Asset
> > {
> > AssetType = assetType,
> > Name = "Asset 1",
> > Number = "123",
>
> > };
>
> > //Repository<Asset> assets = new Repository<Asset>();
> > //assets.Add(veh1Asset);
>
> > //List<Asset> assList = new List<Asset>();
> > //assList.Add(veh1Asset);
>
> > // add 2 vehicles
> > var veh1 = new Vehicle
> > {
> > Description = "Truck 101, this is a long standing blah
> > blah blah",
> > Name = "Truck 101",
> > Image = veh1Image,
> > DrawingImage = vehImage2,
>
> > };
>
> > veh1.AddAsset(veh1Asset);
>
> > vehicles.Add(veh1);
> > }
>
> > Now I've tried adding it different ways before and after and in any
> > case I try, the Vehicle_Id is always null in the DB.
>
> > Am I missing something?
>
> > Sorry if I've missed something simple!!
>
> > Cheers, Sarkie.
>
> --
> - Hudsonhttp://www.bestguesstheory.comhttp://twitter.com/HudsonAkridge
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Fluent NHibernate" group.
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/fluent-nhibernate?hl=en
-~----------~----~----~----~------~----~------~--~---