Pure NH and NUnit... without any thing else. 2009/4/22 fmester <[email protected]>
> > Hi Fabio, > > Given that I am new to all of the pieces used in the this project with > some being new pieces in themselves, I guess it'd be a good way to > isolate the problem. Let try it in pure NH and MVC. I'll report back > with the results. > > > On Apr 22, 5:34 pm, Fabio Maulo <[email protected]> wrote: > > Can you recreate the issue using pure NH ? > > > > 2009/4/22 fmester <[email protected]> > > > > > > > > > > > > > What is trully bizarre is that this update problem occurs without any > > > errors. I expect to be able to update an entity and save it to the > > > database, but for some reason it never makes it that far. BTW, Insert > > > and Delete for the same entity work just fine. > > > > > With another entity which has no relationships to any others, it all > > > works just fine. > > > > > Here's the setup: > > > > > I am using ASP.NET MVC, S#arp Architecture, Fluent NHibernate and > > > NHibernate for this project. > > > > > I have 2 related tables in the database: > > > > > > --------------------------------------------------------------------------------------------------- > > > DocumentType { DocumentTypeID, DocumentTypeDescription } > > > Document { DocumentID, DocumentTypeID, DocumentName } > > > > > I have modelled them as: > > > > > - DocumentType - > > > public DocumentType() { } > > > public virtual string DocumentTypeName { get; set; } > > > public virtual IList<Document> Document { get; set; } > > > > > - Document - > > > public Document() { } > > > public Document(string description, DocumentType documentType):this() > > > { > > > DocumentType = documentType; > > > Description = description; > > > } > > > public virtual string DocumentName { get; set; } > > > public virtual DocumentType DocumentType { get; set; } > > > > > The Fluent NHibernate Mappings look like: > > > > > - DocumentType - > > > public void Override( AutoMap<DocumentType> mapping ) > > > { > > > mapping.WithTable("DocumentType"); > > > mapping.SetAttribute("mutable", "false"); > > > > > mapping.Id( x => x.Id, "DocumentTypeID" ) > > > .WithUnsavedValue( 0 ) > > > .GeneratedBy.Identity(); > > > > > mapping.Map( x => x.DocumentTypeDescription ); > > > > > mapping.HasMany( x => x.Document ) > > > .Inverse() > > > .WithTableName( "Document" ) > > > .WithKeyColumn( "DocumentID" ).AsBag() > > > .Cascade.All().AsList(); > > > } > > > > > - Document - > > > public void Override( AutoMap<Document> mapping ) > > > { > > > mapping.Id( x => x.Id, "DocumentID" ) > > > .WithUnsavedValue( 0 ) > > > .GeneratedBy.Identity(); > > > > > mapping.Map( x => x.DocumentName ); > > > > > mapping.References( x => x.DocumentType, > > > "DocumentTypeID" ) > > > .SetAttribute( "not-null", "true" ); > > > } > > > > > > ------------------------------------------------------------------------------------- > > > > > Here's my DocumentTypeController Edit ActionResult: > > > > > [Authorize] > > > [ValidateAntiForgeryToken] > > > [Transaction] > > > [AcceptVerbs( HttpVerbs.Post )] > > > public ActionResult Edit( int id, [ModelBinder( typeof > > > ( DefaultModelBinder ) )] DocumentType documentType ) > > > { > > > DocumentType documentTypeToUpdate = > > > documentTypeRepository.Get( id ); > > > > > documentTypeToUpdate.DocumentTypeName = > > > documentType.DocumentTypeName; > > > documentTypeToUpdate.DocumentTypeDescription = > > > documentType.DocumentTypeDescription; > > > > > documentTypeRepository.SaveOrUpdate > > > ( documentTypeToUpdate ); > > > > > TempData["message"] = "The documentType was successfully > > > updated."; > > > return RedirectToAction( "Index" ); > > > } > > > > > > ---------------------------------------------------------------------------------------------------------- > > > As you can see from the code in the Edit ActionResult, that I am > > > getting the entity to update using the Get method which is then > > > updated with new values provided by the form. > > > > > The [Transaction] attribute on the Edit method supposedly takes care > > > of the Commit, but it really doesn't. > > > > -- > > Fabio Maulo > > > -- Fabio Maulo --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "nhusers" 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/nhusers?hl=en -~----------~----~----~----~------~----~------~--~---
