no, and probably your "child entity" is just a component

On Mon, Feb 7, 2011 at 12:01 PM, bstack <[email protected]> wrote:

>
> The ParentId is in the Child entity because I thought I needed it in
> order to populate the ParentId column in the dbo.[TEMP_Parent] table.
> Do I not have to specify the ParentId property?
>
> On Feb 7, 2:11 pm, Fabio Maulo <[email protected]> wrote:
> > Yes. You have to have a unidirectional relation.
> > What you have implemented is a shallow-bidirectional-association:
> > public class Child
> > {
> >        public Guid Id;
> >
> >        public Guid ParentId;
> >
> >        public string Description;
> >
> > }
> >
> > What is "ParentId" ?
> >
> >
> >
> >
> >
> > On Mon, Feb 7, 2011 at 10:51 AM, bstack <[email protected]> wrote:
> > > Thanks Fabio.
> >
> > > However, is there any way to do this avoiding a bi-directional
> > > association?
> > > I dont want to add a reference to Parent in the Child class.
> >
> > > Note I am trying to do something very simple:
> >
> > > 1. Create a Parent entity
> > > 2. Create a collection of Child entities associating them with the
> > > parent.
> > > 3. Get NHibernate to just generate INSERT statements.
> >
> > > I was trying to do this previously by using POID = "assigned" - which
> > > works however SELECT statements are also generated.
> > > See
> > >http://groups.google.com/group/nhusers/browse_thread/thread/c614aa5b5.
> ..
> >
> > > Thanks,
> > > Billy
> >
> > > On Feb 7, 1:34 pm, Fabio Maulo <[email protected]> wrote:
> > > >http://nhforge.org/doc/nh/en/index.html#collections-example
> >
> > > > On Mon, Feb 7, 2011 at 9:34 AM, bstack <[email protected]> wrote:
> > > > > All,
> >
> > > > > I have the following entities:
> >
> > > > > public class Parent
> > > > > {
> > > > >        public Guid Id;
> >
> > > > >        public string Description;
> >
> > > > >        public IList<Child> Children;
> > > > > }
> >
> > > > > public class Child
> > > > > {
> > > > >        public Guid Id;
> >
> > > > >        public Guid ParentId;
> >
> > > > >        public string Description;
> > > > > }
> >
> > > > > I have the following mappings:
> >
> > > > > <?xml version="1.0" encoding="utf-8" ?>
> > > > > <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default-
> > > > > access="field">
> > > > >        <class name="ClassLibrary1.Parent, ClassLibrary1"
> table="dbo.
> > > > > [TEMP_Parent]" lazy="false" >
> > > > >                <id name="Id">
> > > > >                        <generator class="guid.comb" />
> > > > >                </id>
> > > > >                <property name="Description" />
> > > > >                <bag name="Children" cascade="all" lazy="false"  >
> > > > >                        <key column="ParentId" foreign-key="true"/>
> > > > >                        <one-to-many class="ClassLibrary1.Child"  />
> > > > >                </bag>
> > > > >        </class>
> > > > > </hibernate-mapping>
> >
> > > > > <?xml version="1.0" encoding="utf-8" ?>
> > > > > <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default-
> > > > > access="field">
> > > > >        <class name="ClassLibrary1.Child, ClassLibrary1" table="dbo.
> > > > > [TEMP_Child]" lazy="false">
> > > > >                <id name="Id">
> > > > >                        <generator class="guid.comb" />
> > > > >                </id>
> > > > >                <property name="ParentId" />
> > > > >                <property name="Description" />
> > > > >        </class>
> > > > > </hibernate-mapping>
> >
> > > > > When I run the following test I get an error:
> >
> > > > > [Test]
> > > > > public void Test1()
> > > > > {
> > > > >        var _parent = new Parent();
> > > > >        _parent.Description = "Parent desc";
> > > > >        _parent.Children = new List<Child>();
> > > > >        _parent.Children.Add(new Child
> > > > >        {
> > > > >                Description = "child desc 1"
> > > > >        });
> > > > >        _parent.Children.Add(new Child
> > > > >        {
> > > > >                Description = "child desc 2"
> > > > >        });
> >
> > > > >        var _repository = new Repository(this.c_sessionManager);
> > > > >        _repository.Save(_parent);
> > > > > }
> >
> > > > > NHibernate: INSERT INTO dbo.[TEMP_Parent] (Description, Id) VALUES
> > > > > (@p0, @p1);@p0 = 'Parent desc', @p1 = 8c7f22c3-1a86-478a-
> > > > > b8a7-9e8300cdc91b
> > > > > NHibernate: INSERT INTO dbo.[TEMP_Child] (ParentId, Description,
> Id)
> > > > > VALUES (@p0, @p1, @p2);@p0 = 00000000-0000-0000-0000-000000000000,
> @p1
> > > > > = 'child desc 1', @p2 = db3c4259-58bb-4ca0-80e5-9e8300cdc924
> > > > > 12:29:14,711 ERROR [   7] AbstractBatcher [(null)]- Could not
> execute
> > > > > command: INSERT INTO dbo.[TEMP_Child] (ParentId, Description, Id)
> > > > > VALUES (@p0, @p1, @p2)
> > > > > System.Data.SqlClient.SqlException (0x80131904): The INSERT
> statement
> > > > > conflicted with the FOREIGN KEY constraint
> "PK_TEMP_Child_ForeignKey".
> > > > > The conflict occurred in database "OLCTG_v2", table
> "dbo.TEMP_Parent",
> > > > > column 'Id'.
> > > > > The statement has been terminated.
> >
> > > > > The childs foreign key back to the parent is never populated.
> > > > > Any suggestions to resolve this issue?
> >
> > > > > Cheers,
> > > > > Billy Stack
> >
> > > > > --
> > > > > You received this message because you are subscribed to the Google
> > > Groups
> > > > > "nhusers" 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/nhusers?hl=en.
> >
> > > > --
> > > > Fabio Maulo- Hide quoted text -
> >
> > > > - Show quoted text -
> >
> > > --
> > > You received this message because you are subscribed to the Google
> Groups
> > > "nhusers" 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/nhusers?hl=en.
> >
> > --
> > Fabio Maulo- Hide quoted text -
> >
> > - Show quoted text -
>
> --
> You received this message because you are subscribed to the Google Groups
> "nhusers" 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/nhusers?hl=en.
>
>


-- 
Fabio Maulo

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" 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/nhusers?hl=en.

Reply via email to