Alo Markus

I have a question about the solution with 2 table. How do you keep
track of the DocumentVersion chain when you only save the
LatestVersion?

On Mar 20, 7:22 pm, Markus Zywitza <[email protected]> wrote:
> You are using the wrong model. I have solved a similar problem by using
>
> [ActiveRecord]
> public class Document
> {
>   [HasMany]
>   public IList<DocumentVersion> Versions {get;set;}
>
>   [BelongsTo]
>   public DocumentVersion LatestVersion {get;set;}
>
>   public DocumentVersion CreateNewVersion()
>   {
>     // logic for creating new DocumentVersion
>     // also updates LatestVersion and Versions list
>   }
>
> }
>
> [ActiveRecord]
> public class DocumentVersion
> {
>   [BelongsTo]
>   public Document Document {get;set;}
>
> }
>
> If you really have to use one class only, try this:
>
> [ActiveRecord]
> public class Document
> {
>   [BelongsTo]
>   public Document Parent {get;set;}
>
>   [BelongsTo]
>   public Document OriginalVersion {get;set;}
>
>   [BelongsTo]
>   public Document LatestVersion {get;set;}
>
>   public Document CreateNewVersion()
>   {
>     // logic for creating new Document version
>     // also updates LatestVersion on all ancestors
>   }
>
> }
>
> -Markus
>
> 2010/3/18 chitech <[email protected]>:
>
>
>
> > Alo
>
> > I have a document object which can have one parent document and one
> > child document. A chain like this:
>
> > first version document (no parent, one child) - second version
> > document (one parent, one child) - third version document (one parent,
> > no child)
>
> > I have this mapping:
>
> >    [ActiveRecord(Lazy = true)]
> >    public class Registration
> >    {
> >        [BelongsTo("ParentDocumentId")]
> >        public virtual Document ParentDocument { get; set; }
>
> >        [HasMany]
> >        public virtual IList<Document> ChildDocuments { get; set; }
>
> >        public virtual Document ChildDocument
> >        {
> >            get
> >            {
> >                return ChildDocuments != null && ChildDocuments.Count
> > == 1 ? ChildDocuments[0] : null;
> >            }
> >            set
> >            {
> >                if (ChildDocuments == null) ChildDocuments = new
> > List<Document>();
> >                ChildDocuments.Add(value);
> >            }
> >        }
> >    }
>
> > How can I make a query to get the last Document (third version
> > document). I can't really figure out how to use HQL or criteria to
> > solve this problem.
>
> > Thx in advance
>
> > --
> > You received this message because you are subscribed to the Google Groups 
> > "Castle Project Users" 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 
> > athttp://groups.google.com/group/castle-project-users?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
"Castle Project Users" 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/castle-project-users?hl=en.

Reply via email to