Thanks, I would like to make sure I'm not going crazy! :)  For
reference, when I ran the FirstExample project every table was
populated except for Employee.

On Feb 12, 9:33 am, James Gregory <[email protected]> wrote:
> The FirstProject example was originally written against SQLExpress, but I'll
> have a test tonight.
>
> On Thu, Feb 12, 2009 at 2:32 PM, x97mdr <[email protected]> wrote:
>
> > I renamed the Relation field back to ParentRelation and modified the
> > VariableMap back to this:
>
> >    public class VariableMap : ClassMap<Variable>
> >    {
> >        public VariableMap()
> >        {
> >            Id(x => x.Id);
> >            References(x => x.ParentRelation)
> >                 .WithForeignKey("Relation_id")
> >                .TheColumnNameIs("Relation_id")
> >                .Cascade.All();
> >        }
> >    }
>
> > The appropriate columns are now created, but the cascading no longer
> > works. :(  Relation seems to have been created, but the Variable
> > information was not.  Is there a bug in here somewhere?
>
> > Actually, I just tried running the FirstExample project from the trunk
> > again (which I was using as an example for my own project here).  When
> > I replaced the configuration to point to SQL Server (see below for
> > modified CreateSessionFactory method) the References relationship does
> > not work there either ... I really think there is a bug here with the
> > References or HasMany methods, either that or its my configuration,
> > but my config is pretty basic.  Try the FirstExample project but
> > examine the database after it has run (save it to SQL Server or
> > something) and see if the information is actually persisted in the
> > tables or not.
>
> >        private static ISessionFactory CreateSessionFactory()
> >        {
> >            return Fluently.Configure()
> >                 .Database(MsSqlConfiguration
> >                            .MsSql2005
> >                                .ConnectionString(x => x.Is
> > (@"Server=BUMBLEBEE
> > \SQLEXPRESS;Database=EditImputation;Trusted_Connection=True;"))
> >                                .ShowSql())
> >                 .Mappings(m =>
> >                    m.FluentMappings.AddFromAssemblyOf<Program>())
> >                .ExposeConfiguration(BuildSchema)
> >                .BuildSessionFactory();
> >         }
>
> > On Feb 12, 3:59 am, James Gregory <[email protected]> wrote:
> > > Sorry, that should have been WithKeyColumn rather than TheColumnNameIs.
>
> > > On Thu, Feb 12, 2009 at 8:58 AM, James Gregory <[email protected]
> > >wrote:
>
> > > > Your table is ending up with three columns because the HasMany in
> > Relation
> > > > is called Variables but the other side of the relation is called
> > > > ParentRelation; this is causing FNH to not see them as two sides of the
> > same
> > > > relationship. Try calling TheColumnNameIs on your ParentRelation and
> > giving
> > > > it "Relation_id".
> > > > Making that change might actually fix your saving issue.
>
> > > > On Thu, Feb 12, 2009 at 12:35 AM, x97mdr <[email protected]>
> > wrote:
>
> > > >> OK I changed my test fixture to this:
>
> > > >>        [TestMethod]
> > > >>        public void Can_Add_Variable()
> > > >>        {
> > > >>            var relation = new Relation();
> > > >>             var variable = new Variable();
> > > >>            relation.AddVariable(variable);
>
> > > >>            using (var session = sessionProvider.CreateSession())
> > > >>            {
> > > >>                using (var transaction = session.BeginTransaction())
> > > >>                {
> > > >>                    session.Save(relation);
> > > >>                     transaction.Commit();
> > > >>                }
> > > >>            }
> > > >>        }
>
> > > >> And the relation is saving, but the variable is not. So no cascading
> > > >> is happening.  Then I modified the VariableMap class to this:
>
> > > >>    public class VariableMap : ClassMap<Variable>
> > > >>    {
> > > >>        public VariableMap()
> > > >>        {
> > > >>            Id(x => x.Id);
> > > >>            References(x => x.ParentRelation)
> > > >>                 .Cascade.All();
> > > >>        }
> > > >>    }
>
> > > >> And it works, though my Variable table has three columns Id,
> > > >> ParentRelation_id and Relation_id where Relation_id remains NULL.
>
> > > >> Any thoughts?  It's weird that I had to ask the Cascade.All() to the
> > > >> References column of the variable when it doesn't appear to be needed
> > > >> based on the FirstExample project.  Also, weird that there are three
> > > >> columns on the Variable table when I would expect at most 2 columns
> > > >> since ParentRelation is set to be the References in the mapping.
>
> > > >> Would it be helpful for me to post my entire solution I wonder?
>
> > > >> Thansk so much for your suggestions thus far.
>
> > > >> On Feb 11, 7:08 am, James Gregory <[email protected]> wrote:
> > > >> > Yes, you need to explicitly commit a transaction otherwise it gets
> > > >> rolled
> > > >> > back in the dispose. Although sometimes it can seem like things are
> > > >> being
> > > >> > saved, generally cascades don't occur until the transaction is
> > > >> committed.
>
> > > >> > On Wed, Feb 11, 2009 at 12:02 PM, x97mdr <[email protected]>
> > > >> wrote:
>
> > > >> > > I have tried it at times (though honestly, I have tried so many
> > things
> > > >> > > now I'm not sure what I have tried together).  Originally I
> > started
> > > >> > > out with a repository pattern object that automatically wrapped
> > the
> > > >> > > save in a transaction and committed it.  I will give it another
> > shot
> > > >> > > tonight though, I don't have the project here at work.
>
> > > >> > > When the IDbTransaction is in a using statement do you still have
> > to
> > > >> > > commit it?
>
> > > >> > > On Feb 11, 6:11 am, James Gregory <[email protected]>
> > wrote:
> > > >> > > > You're not committing the transaction after your save. Have you
> > > >> tried
> > > >> > > that?
>
> > > >> > > > On Wed, Feb 11, 2009 at 11:03 AM, x97mdr <
> > [email protected]>
> > > >> > > wrote:
>
> > > >> > > > > Hrm, I just tried that and no dice.  :(
>
> > > >> > > > > I was assigning the IDs because originally I wanted
> > string-based
> > > >> > > > > identifiers (I'm applying this to a legacy database) so I had
> > to
> > > >> > > > > assign the Id (or key name) to the objects.
>
> > > >> > > > > This is sooo frustrating, It seems like such a simple problem.
> > > >>  I'll
> > > >> > > > > turn on full log4net later today and see what happens with it.
>
> > > >> > > > > Any other suggestions in the meantime?
>
> > > >> > > > > On Feb 10, 9:35 pm, Paul Batum <[email protected]> wrote:
> > > >> > > > > > Hi there,
>
> > > >> > > > > > I'm not sure what the problem is, but everything you are
> > doing
> > > >> seems
> > > >> > > > > > perfectly normal EXCEPT assigning the ID's. Have you tried
> > it
> > > >> without
> > > >> > > > > > assigning IDs explicitly?
>
> > > >> > > > > > Paul Batum
>
> > > >> > > > > > On Wed, Feb 11, 2009 at 1:24 PM, x97mdr <
> > > >> [email protected]>
> > > >> > > > > wrote:
>
> > > >> > > > > > > I am just starting to learn NHibernate now, I tried
> > setting up
> > > >> a
> > > >> > > very
> > > >> > > > > > > simple example to play around and for some reason I cannot
> > get
> > > >> > > > > > > cascading to work.  I followed the example of the
> > FirstExample
> > > >> > > project
> > > >> > > > > > > and tried to apply it to my domain.  I have two classes
> > with a
> > > >> > > one-to-
> > > >> > > > > > > many relationship between them.  They are Variable and
> > > >> Relation
> > > >> > > > > > > (related to metadata we store in our environment).
>
> > > >> > > > > > > The problem is that when I run the unit test which should
> > save
> > > >> the
> > > >> > > > > > > relation and the related variable only the relation ever
> > gets
> > > >> > > saved,
> > > >> > > > > > > if at all.
>
> > > >> > > > > > > I have tried what seems to me to be every variation of the
> > > >> mappings
> > > >> > > to
> > > >> > > > > > > see if they would work but nothing has succeeded.  The
> > weird
> > > >> thing
> > > >> > > is,
> > > >> > > > > > > the FirstExample project (for both SQLite and when I point
> > it
> > > >> to
> > > >> > > SQL
> > > >> > > > > > > Server Express) seem to work fine.  There is something I
> > am
> > > >> > > > > > > misunderstanding in my mappings.  I even tried switching
> > > >> between
> > > >> > > using
> > > >> > > > > > > Save and SaveOrUpdate on the session variable.  I'm using
> > the
> > > >> trunk
> > > >> > > of
> > > >> > > > > > > the fluent-nhibernate project, including the nhibernate
> > > >> library in
> > > >> > > its
> > > >> > > > > > > tools directory (2.0.1)
>
> > > >> > > > > > > Any help is greatly appreciated and sorry if its a bit of
> > a
> > > >> newb
> > > >> > > > > > > question but its really bugging me!
>
> > > >> > > > > > > Here are the classes for reference:
>
> > > >> > > > > > >    public class Variable : IEntity
> > > >> > > > > > >    {
> > > >> > > > > > >        public virtual long Id
> > > >> > > > > > >        {
> > > >> > > > > > >            get;
> > > >> > > > > > >            set;
> > > >> > > > > > >        }
>
> > > >> > > > > > >        public virtual Relation ParentRelation
> > > >> > > > > > >        {
> > > >> > > > > > >            get;
> > > >> > > > > > >            set;
> > > >> > > > > > >        }
> > > >> > > > > > >    }
>
> > > >> > > > > > >    public class Relation : IEntity
> > > >> > > > > > >    {
> > > >> > > > > > >        public virtual long Id
> > > >> > > > > > >        {
> > > >> > > > > > >            get;
> > > >> > > > > > >            set;
> > > >> > > > > > >        }
>
> > > >> > > > > > >        public virtual IList<Variable> Variables
> > > >> > > > > > >        {
> > > >> > > > > > >            get;
> > > >> > > > > > >            set;
> > > >> > > > > > >        }
>
> > > >> > > > > > >        public Relation()
> > > >> > > > > > >        {
> > > >> > > > > > >            Variables = new List<Variable>();
> > > >> > > > > > >        }
>
> > > >> > > > > > >        public virtual void AddQuestion(Variable
>
> ...
>
> read more »
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to