views:

45

answers:

2
+1  Q: 

Book Store Model

I am developing a solution. I want to model following structure

Collection 1
       Category 1
        Sub Category 1.1
                  Book 1
                  Book 2
                  Book 3

        Sub Category 1.2
                 Book 1
       Category 2
        Sub Category 2.1
                Book 2
        Sub Category 2.2
                Book 3
        Sub Category 2.3
                Book 4
       Category 3
        Sub Category 3.1
                Book 4

)

What it the best possible way to model it so that it can be traversed in both the direction

1) From collection to Book (i.e. if collection is selected find all the categories, sub categories, and books under that.)

2) From book to collection (i.e. if book is selected should be able to find which sub category, category and collection it belongs to)

A: 

It sounds like what you need is a threaded tree. Alternatively, just use almost any halfway reasonable relational database.

Jerry Coffin
A: 

Here's a basic model for your application.

alt text

public class Book
{
    public Category ParentCategory { get; set; }
    public Book() { }
}

public class Category
{
    public CategorySet SubCategories { get; set; }
    public BookSet Books { get; set; }

    public Category()
    {
        SubCategories = new CategorySet();
        Books = new BookSet();
    }
}

public class Collection
{
    public CategorySet Categories { get; set; }
    public Collection() {
        Categories = new CategorySet();
    }
}

public class BookSet : System.Collections.ObjectModel.Collection<Book>
{
    public BookSet() { }
}

public class CategorySet : System.Collections.ObjectModel.Collection<Category>
{
    public CategorySet() { }
}

public class CollectionSet : System.Collections.ObjectModel.Collection<Collection>
{
    public CollectionSet() { }
}
this. __curious_geek