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
-~----------~----~----~----~------~----~------~--~---

Reply via email to