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]>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 <[email protected]>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]>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 >>> <[email protected]>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] >>>> > 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]>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 -~----------~----~----~----~------~----~------~--~---
