Hej,
Har en allmänfråga angående om hur ni använder ORMappern och Datalagret.
Jag undrar hur ni skickar data från datalagret? Använder ni de klasser som ORMappern genererar för att skicka vidare datan eller skapar ni speciella klasser för det?
13 svar · 495 visningar · startad av asmodie
Hej,
Har en allmänfråga angående om hur ni använder ORMappern och Datalagret.
Jag undrar hur ni skickar data från datalagret? Använder ni de klasser som ORMappern genererar för att skicka vidare datan eller skapar ni speciella klasser för det?
I min värld så är datalagret gömt av OR-Mappern. Alltså OR-Mappern använder sig av DataLagret för att hämta data, medans din applikation använder sig av OR-Mappern för att hämta data.
Det finns tillfällen då man använder speciella klasser för att transportera data (jag kallar dem för entitys) som kan innehålla data från flera "OR-mapper" klasser. Men oftas så brukar jag låta min applikation använda de klasser som fylls av OR-Mappern, eftersom jag är lat och inte orkar hålla på med att flytta data mellan 2 olika objekt som ser nästan helt identiska ut.
- Magnus
Gladh skrev:
Det finns tillfällen då man använder speciella klasser för att transportera data (jag kallar dem för entitys) som kan innehålla data från flera "OR-mapper" klasser. Men oftas så brukar jag låta min applikation använda de klasser som fylls av OR-Mappern, eftersom jag är lat och inte orkar hålla på med att flytta data mellan 2 olika objekt som ser nästan helt identiska ut.
- Magnus
Precis min tanke.
Ska man använda ObjectSet eller ObjectList?
Kan man få objectSeten som ormappern genererar att bli typade?
Ska man använda ObjectSet eller ObjectList?
Vad menar du med ObjectSet och ObjectList? Är det en collection av objekten som du menar. Så fall kan du få de typade genom att skapa en collection för varje class, men du måste i denna collection använda dig av otypade objekt från OR-Mappern.
Om du bestämmer dig för att använda .NET 2.0 så kan du använda Generics, och kan då starkt typade collections utan att skapa en ny collection klass för varje Klass.
Men som sagt vad är skillnaden på objectSet/objectList i din definition?
- M
Hur skapar jag en typad collection från ORMappern? Tex:
MinCollection workAdroups = Manager.GetObjectSet(typeof(WorkAdGroup), string.Empty);
Hur skapar jag min Collection på ett bra sätt?
Wilsons definition på de två olika:
ObjectList - The Wilson.ORMapper.ObjectList class is a lazy-loading collection of entity objects. It implements IObjectSet, and thus IList, and ILoadOnDemand, so see the interfaces for more details.
ObjectSet - The Wilson.ORMapper.ObjectSet class is the main type of collection of entity objects. It implements IObjectSet, and thus IList, so see the interfaces for more details.
Hur skapar jag en typad collection från ORMappern? Tex:
MinCollection workAdroups = Manager.GetObjectSet(typeof(WorkAdGroup), string.Empty);
Nope så kan du inte göra eftersom Manager.GetObjectSet() måste returnera en basetype/interface/array of objekts.
Om du vill skapa en typad collection från din datamaster så måste du själv skapa din collection och i denna collection så använder du ORMappern, typ så här.
public class MyCollection : BaseCollection{
public MyClass GetItem(int Id){
return (MyClass) base.GetItem(id);
}
public void Add(MyClass myClass){
base.Add((object)myClass);
}
}
Nu har du fått en typad collection som endast kan taemot MyClass och lämna tillbaka en MyClass objekt.
- Magnus
Gladh. Jag tackar så jätte mycket.
Jag fortsätter mina frågor.
Om man t.ex. vil selecta top 5 när man använder OR mappern? Hur gör man?
Antingen så bygger man in den funktionalliteten i ORMappern så att du kan skicka med attribute som TOP 5 till databasen, eller så hämtar ORMapperna ALL data som finns i databasen och sedan så har man en funktion som endast hämtar ut en delmängd från den collection som ORMappern har returnerat... Det finns för och nackdelar med båda, man väljer det som man tror passar en bäst.
- M
Finns TOP 5 funktionen i Wilsons ORMapper?
Ska själv försöka ta reda på det. Men vore glaf för ett svar.
Hur gör du då om du bara vill ha de 5 första posterna med ormappern?
Och hur kalkylerar man aggregata värden ?
Min ORMapper hämtar ut all data som matchar min sökkriteria och därefter så hämtar jag ut en delmängd av objekt från collection.
- Magnus
Och hur kalkylerar man aggregata värden ?
Antingen så bygger man in funktionalliteten i sin O/RMapper (vilket inte är troligt).
Eller så låter man O/RMapper köra en SP som har en fördefinerad sqlsats.
en O/RMapper är inget substitut för SQL språket och har väldigt svårt att se att det någonsin kommer komma en O/RMapper som kan hantera alla SQLKommand. Den enklast vägen ut är att exekvera en SP.
- M