CatZ skrev:
Får man göra så?
Du får göra precis som du vill, det är ju din kod ;)
Problemet blir att du kommer göra en sörens massa SQLsträngar eftersom du måste göra din switchsats för varje typ som du vill hämta data ifrån.
Jag har i min OR-Mapper endast 3 möjligheter.
- Hämta Alla.
- Hämta efter ID
- Exekvera ett Command.
Jag började som du med att försöka få till det med Joins och Top och alla möjliga varianter, men har nu tagit bort det och har 2 fasta metoder, Hämta Alla och Hämta efter ID. Sedan har jag möjligheten att exekvera ett command, som då kan exekvera SP eller SQL och där kan jag hantera alla möjligheter.
Typ så här:
Article article = EntityMapper.Load<Article>(id);
List<Article> articleList = EntityMapper.Load<Article>();
List<Article> articleList = EntityMapper.ExecuteCommand<Article>(command);
Det viktiga är att du slipper sitta och mappa data till dina entiteter i varje projekt, det tar lång tid att göra, där kommer ORMappern in. Skicka in vilket objekt du vill till Load() methoden och du får tillbaka det fyllt med data från databasen.
Så här ser det ut i mitt "DAL" i mitt projekt som jag håller på med just nu:
//-- Create command to call SP
IDbCommand command = new SqlCommand();
command.CommandType = CommandType.StoredProcedure;
command.CommandText = "dbo.GetCategories";
SqlParameter parameter = new SqlParameter("@LCID", SqlDbType.Int);
parameter.Value = lcid;
command.Parameters.Add(parameter);
TSList<Category> itemList = _EntityMapper.ExecuteCommand<Category>(command);
return itemList;
//-- Create command to call SP
IDbCommand command = new SqlCommand();
command.CommandType = CommandType.StoredProcedure;
command.CommandText = "GetColors";
SqlParameter parameter = new SqlParameter("@LCID", SqlDbType.Int);
parameter.Value = lcid;
command.Parameters.Add(parameter);
TSList<Color> itemList = _EntityMapper.ExecuteCommand<Color>(command);
return itemList;
Som du märker så är det exakt samma metod som jag anropar i min EntityMapper, men får tillbaka olika typer beroende på vilken typ jag skickar med till entitymappern, och här spara jag massor med tid genom att jag slipper sitta och mappa mellan datan och objektet.
- M
