Laden...

Linq2Sql: Wie am besten Model-Klassen aufbauen...

Erstellt von M@TUK vor 13 Jahren Letzter Beitrag vor 13 Jahren 942 Views
M
M@TUK Themenstarter:in
402 Beiträge seit 2005
vor 13 Jahren
Linq2Sql: Wie am besten Model-Klassen aufbauen...

verwendetes Datenbanksystem: <sql 2005 / 2008>

Hi,

Ich werkel grad etwas mit ASP.net mvc2 und Linq to SQL rum..

Nun bin ich aber am überlegen was "gutes Design" für die Model-Klassen ist.

Ich verwende Linq2Sql rein für den Datenbankzugriff und mache
"eigene" Model-Klassen die ich dann per linq2sql befülle..

Also z.b.:


class Category
{
     public int CategoryId { get; set; }
     public string Name { get; set; }
     pubic string Description { get; set; }
     ...
}

und per linq to sql dann:


IQueryable<Category> = from c in db.Categories 
                                      select new Category 
                                     { 
                                           CategoryId = c.CategoryId,
                                           Name = c.Name,
                                           Description = c.Description
                                           ...  
                                      };

der query is zb. in einer Methode "GetCategories".

Wenn nun wie bei Categorien Produkte enthalten wären...

Ist es besser eine Methode "GetProducts(int CategoryId)" zu erstellen
die mir alle Produkte für die Category zurückgibt.
Oder die Produktliste direkt als Member der Klasse Category anzulegen.

also:


class Category
{
     public int CategoryId { get; set; }
     public string Name { get; set; }
     public string Description { get; set; }
     public IQueryable<Product> Products { get; set; }
     ...
}

und per linq to sql dann:


IQueryable<Category> = from c in db.Categories 
                                      select new Category 
                                     { 
                                           CategoryId = c.CategoryId,
                                           Name = c.Name,
                                           Description = c.Description
                                           Products = from p in db.Products...
                                      };

oder...


IQueryable<Category> = from c in db.Categories 
                                      select new Category 
                                     { 
                                           CategoryId = c.CategoryId,
                                           Name = c.Name,
                                           Description = c.Description,
                                           Products = GetProductsByCategory(c.CategoryId)
                                           ...
                                      };

Im "Vollausbau" würde dann die Methode "GetCategories"
Alle Kategorien zurückliefern.
Jede Kategorie hätte dann zusätzlich
ein Objekt "Image",
ein Liste/Iqueryable "Products", (diese hätte dann wieder Varianten, Images,Files, Preise, Spezifikationen,...)
ein wieder Liste/Iqueryable "Categories" => und von vorn... 😉

Und dass das alles die Methode "GetCategories" zurückgibt macht mich etwas stutzig...

Ich hoffe das ist einigermaßen verständlich... bin selber grad etwas verwirrt.. ^^

lg