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