Hi James Yes, I do mean an Application wide (of course alterable by per entity basis!) cascade for the relationship.
Thanks and keep up the great work. Ramana On Thu, Feb 12, 2009 at 11:47 AM, 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]>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 -~----------~----~----~----~------~----~------~--~---
