Hi James I created Jira issue 118 for tracking purposes. Once again, thanks, and keep up the good work. Ramana
On Wed, Feb 18, 2009 at 9:57 AM, James Gregory <[email protected]>wrote: > I'm currently working on a big rewrite of conventions that should drop over > the next few days, once that arrives we'll be able to support the scenario > you speak of. > > > On Fri, Feb 13, 2009 at 1:28 AM, Brendan Erwin <[email protected]>wrote: > >> Wait, wouldn't that cause "circular cascades"? (a problem I think I have >> but have yet to get the opportunity to fix...) >> >> >> On Feb 12, 2009, at 12:47 PM, James Gregory <[email protected]> >> wrote: >> >> You mean an application wide Cascade.All for any relationship? No, not >> currently. Good idea though. >> >> On Thu, Feb 12, 2009 at 4:56 PM, Ramana Kumar <<[email protected]> >> [email protected]> wrote: >> >>> Thanks James. Now with the cascade.All, the Saves are working fine. >>> >>> I guess there is no way to set up "cascade all" for all the Entities that >>> references another Entity. >>> Ramana >>> >>> On Thu, Feb 12, 2009 at 3:01 AM, James Gregory <jagregory.com@ >>> gmail.com> wrote: >>> >>>> Those wiki pages cover how you'd set the cascade. >>>> ForTypesThatDeriveFrom<Golfer>(m => >>>> { >>>> m.References(x => Address) >>>> .Cascade.All(); >>>> }) >>>> >>>> On Thu, Feb 12, 2009 at 12:09 AM, Ramana Kumar <<[email protected]> >>>> [email protected]> wrote: >>>> >>>>> I will go back home and check the wiki pages. In the meantime, here is >>>>> what I use to save >>>>> >>>>> [Transaction] >>>>> [AcceptVerbs(HttpVerbs.Post)] >>>>> public ActionResult Create(Golfer golfer) { >>>>> if (golfer.IsValid()) { >>>>> golferRepository.SaveOrUpdate(golfer); >>>>> TempData["message"] = "The golfer was successfully >>>>> created."; >>>>> return RedirectToAction("Index"); >>>>> } >>>>> else { >>>>> >>>>> MvcValidationAdapter.TransferValidationMessagesTo(ViewData.ModelState, >>>>> golfer.ValidationResults()); >>>>> return View(); >>>>> } >>>>> } >>>>> >>>>> When I put it the thru the debugger, I see that golfer instance has >>>>> correct values (from the form) for FirstName, LastName, Email as well as >>>>> Address.Addr1, Address.City etc populated correctly. >>>>> >>>>> BTW, SaveOrUpdate if fine and when the "Create" method ends (i.e. the >>>>> transaction is complete) then I get the exception. Obviously, because the >>>>> flush is thrwoing the exception. >>>>> >>>>> I still suspect that "cascade" on ManyToOne needs to set to "all", I am >>>>> not sure how to do it. >>>>> Thanks >>>>> Ramana >>>>> >>>>> >>>>> On Wed, Feb 11, 2009 at 2:59 PM, James Gregory <jagregory.com@ >>>>> gmail.com> wrote: >>>>> >>>>>> Can you show us the code that's actually saving the entities? >>>>>> These two wiki pages show the ways you can customise automappings: >>>>>> altering >>>>>> entities<http://wiki.fluentnhibernate.org/show/AutoMappingAlteringEntities> >>>>>> and >>>>>> mapping >>>>>> overrides<http://wiki.fluentnhibernate.org/show/AutoMappingOverrides>. >>>>>> >>>>>> >>>>>> >>>>>> On Wed, Feb 11, 2009 at 8:43 PM, Ramana Kumar <<[email protected]> >>>>>> [email protected]> wrote: >>>>>> >>>>>>> No, I did mean Many to One :-) The Domain Objects are Golfer and >>>>>>> Address and many Golfers can share the same Address. Per James >>>>>>> "i-think-you-mean-a-many-to-one-sir" G, this should be mapped as Many to >>>>>>> one. I am just not sure how to do it thru AutoMap conventions. >>>>>>> HTH >>>>>>> Ramana >>>>>>> >>>>>>> >>>>>>> namespace GolfHandicapManager.Core >>>>>>> { >>>>>>> public class Golfer : Entity >>>>>>> { >>>>>>> public Golfer() { } >>>>>>> [DomainSignature] >>>>>>> [NotNullNotEmpty] >>>>>>> public virtual string FirstName { get; set; } >>>>>>> [DomainSignature] >>>>>>> [NotNullNotEmpty] >>>>>>> public virtual string LastName { get; set; } >>>>>>> [NotNullNotEmpty] >>>>>>> public virtual string EmailAddress { get; set; } >>>>>>> public virtual string EmailAddress2 { get; set; } >>>>>>> public virtual string HomePhone { get; set; } >>>>>>> public virtual string CellPhone { get; set; } >>>>>>> public virtual Address Address { get; set; } >>>>>>> } >>>>>>> public class Address : Entity >>>>>>> { >>>>>>> public Address() { } >>>>>>> [DomainSignature] >>>>>>> public virtual string Addr1 { get; set; } >>>>>>> public virtual string Addr2 { get; set; } >>>>>>> [DomainSignature] >>>>>>> public virtual string City { get; set; } >>>>>>> public virtual string State { get; set; } >>>>>>> public virtual string Country { get; set; } >>>>>>> public virtual string ZipCode { get; set; } >>>>>>> } >>>>>>> } >>>>>>> >>>>>>> >>>>>>> >>>>>>> On Wed, Feb 11, 2009 at 2:05 PM, Chris Marisic < <[email protected]> >>>>>>> [email protected]> wrote: >>>>>>> >>>>>>>> >>>>>>>> Do you mean One to Many? >>>>>>>> >>>>>>>> convention.OneToManyConvention = m => >>>>>>>> { >>>>>>>> m.Cascade.All(); >>>>>>>> }; >>>>>>>> >>>>>>>> On Feb 11, 1:58 pm, Ramana Kumar <[email protected]> wrote: >>>>>>>> > Hi >>>>>>>> > I am trying to use AutoMap to define behaviour for ManyToOne and I >>>>>>>> get the >>>>>>>> > following exception >>>>>>>> > >>>>>>>> > object references an unsaved transient instance - save the >>>>>>>> transient >>>>>>>> > instance before flushing: >>>>>>>> > >>>>>>>> > The relevant code is >>>>>>>> > >>>>>>>> > public class AutoPersistenceModelGenerator : >>>>>>>> IAutoPersistenceModelGenerator >>>>>>>> > { >>>>>>>> > public AutoPersistenceModel Generate() >>>>>>>> > { >>>>>>>> > AutoPersistenceModel mappings = AutoPersistenceModel >>>>>>>> > .MapEntitiesFromAssemblyOf<Golfer>() >>>>>>>> > .Where(GetAutoMappingFilter) >>>>>>>> > .WithConvention(GetConventions); >>>>>>>> > return mappings; >>>>>>>> > } >>>>>>>> > >>>>>>>> > private bool GetAutoMappingFilter(Type t) >>>>>>>> > { >>>>>>>> > return t.Namespace == "GolfHandicapManager.Core"; >>>>>>>> > } >>>>>>>> > private void GetConventions(Conventions c) >>>>>>>> > { >>>>>>>> > c.GetPrimaryKeyNameFromType = type => "ROW_ID"; //DB >>>>>>>> has ROW_ID >>>>>>>> > as Primary Key >>>>>>>> > c.FindIdentity = type => type.Name == "ID"; // S#arp >>>>>>>> currently >>>>>>>> > uses "ID" >>>>>>>> > // Taken from Ayende Blog >>>>>>>> > c.GetForeignKeyNameOfParent = (type => type.Name + >>>>>>>> "_ID"); >>>>>>>> > c.GetTableName = type => >>>>>>>> > Inflector.Net.Inflector.Pluralize(type.Name); >>>>>>>> > c.IsBaseType = IsBaseTypeConvention; >>>>>>>> > // Convert PropertyName to Underscore >>>>>>>> > c.AddPropertyConvention(new >>>>>>>> > PascalToUnderscorePropertyConvention()); >>>>>>>> > } >>>>>>>> > >>>>>>>> > I am assuming I have to do a "cascade=all" somewhere in there but >>>>>>>> do not >>>>>>>> > know how to do it thru a convention. >>>>>>>> > >>>>>>>> > Any pointers? >>>>>>>> > Thanks >>>>>>>> > Ramana >>>>>>>> >>>>>>>> >>>>>> >>>>>> >>>> >>>> >>>> >>> >>> >>> >> >> >> >> >> > > > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
