webForumDet fria alternativet

Wilson ORMapper

36 svar · 895 visningar · startad av icaaq · sida 2 av 2

GladhMedlem sedan maj 20012 812 inlägg
#21

Väldig sällan som jag vill använda en InnerJoins med en ORMapper, har aldrig stött på det faktiskt.

Men om jag skulle behöva det, så lägger jag till funktionallitet för att skapa joins i min ORMapper så att man på ett fält i klassen sätter ett attribute som ser ut typ något sånt här:

[Joins(Join.Inner, "Customer","ID")]

Där Join.Inner beskriver vilken Join jag vill göra.
Där Customer är mot vilken tabell som jag vill göra joinen på
Där ID är på vilken kolumn som jag vill göra joinen på.

Men som sagt, ytterst sällan man vill göra en join med en ORMapper eftersom man då inte direkt mappar ett object mot en tabell och därmed tappat lite av iden med ORMapper.

- M

icaaqMedlem sedan okt. 20005 273 inlägg
#22

Just det....men om du inte använder ORMappern till det hur arbetar du då?...för du som jag måste väl ibland använda sig av lite mer avancerade SQL-statments

mv icaaq

PDahlenMedlem sedan apr. 2004778 inlägg
#23

Wilson ORMappern har stöd för Stored Procedures så i så fall kan du lägga dina JOIN i en SP.
Eftersom jag inte hunnit jobba så mycket med ORMappern så vet jag dock inte hur du ska använda dessa.

PDahlenMedlem sedan apr. 2004778 inlägg
#24

Ett tillägg:

Däremot så är det som Gladh säger, du bör inte använda JOINS med en ORMapper eftersom du då inte mappar mot objekt.
Se om du kan ha en annan lösning.
Har du nåt exempel på när du behöver en JOIN?

icaaqMedlem sedan okt. 20005 273 inlägg
#25

låt oss säga att jag vill ha ut alla kunder som ligger under en viss branch, dock så kan en kund ligga under flera brancher så då har jag följande tabeller tblCustomer, tblBranch samt tblCustomerBranchCollection.

Då kan jag ju via en Join ta ut alla kunder som har ett visst branshId i tblCustomerBranchCollection.

Som sagt detta var ju bara ett exempel.

PDahlen: Jag använder mySQL 4.0 så det är inte ett alternativ att använda SP......men jag väntar dock ivrigt på en stabil 5.0:a

mv icaaq

PDahlenMedlem sedan apr. 2004778 inlägg
#26

I det fallet skulle jag ha följande objekt; Customer, Branch, CustomerCollection

Branchobjektet skall ha en CustomerCollection med Lazy Load.
Någon JOIN behövs inte. Förmodligen kan Gladh det här bättre men du borde ha möjlighet att göra restriktioner på den SELECT som ORMappern gör och på så sätt bara hämta de Customers som tillhör en viss branch.

icaaqMedlem sedan okt. 20005 273 inlägg
#27

Tillbaks ;)
Jag har gjort följande.
1. Angett en relation mellan tabellen tblProvince.pk?ProvinceId och tblProvinceNeighbour.fldSelectedProvince i access.
2. Mappat en Mappings.config med ORHelpern. Och i den ligger också relationen

[red]
		<entity type="xxx.xxx.businessObjects.TblProvince" table="tblProvince" keyMember="pkProvinceId" keyType="Auto">
		<attribute member="pkProvinceId" field="pk_ProvinceId" alias="PkProvinceId" />
		<attribute member="fldProvinceName" field="fldProvinceName" alias="FldProvinceName" />
		<relation relationship="OneToMany" member="tblProvinceNeighbourFldSelectedProvinces" field="fldSelectedProvince"
			 type="xxx.xxx.businessObjects.TblProvinceNeighbour" lazyLoad="true" cascadeDelete="true" />
	</entity>
	<entity type="xxx.xxx.businessObjects.TblProvinceNeighbour" table="tblProvinceNeighbour" keyMember="pkProvinceNeighbour" keyType="Auto">
		<attribute member="pkProvinceNeighbour" field="pk_ProvinceNeighbour" alias="PkProvinceNeighbour" />
		<attribute member="fldSelectedProvince" field="fldSelectedProvince" alias="FldSelectedProvince" />
		<attribute member="fldNeighbourProvince" field="fldNeighbourProvince" alias="FldNeighbourProvince" />
		<relation relationship="ManyToOne" member="fldSelectedProvinceObject" field="fldSelectedProvince"
			 type="xxx.xxx.businessObjects.TblProvince" lazyLoad="true" />
	</entity>
[/red]

Hur gör jag nu för att hämta alla object som har fldSelectedProvince = 6 ??

mv icaaq

icaaqMedlem sedan okt. 20005 273 inlägg
#28

Ok jag har fått hjälp med mitt problem av Paul Wilson. Dock så förstår jag inte riktigt det han nämner om views i det sista inlägget.

Vore tacksamm om någon ville förklara vad han menar. :)

Länk till inlägget
http://www.wilsondotnet.com/Tips/ViewPosts.aspx?Thread=692

mv icaaq

icaaqMedlem sedan okt. 20005 273 inlägg
#29

Angående views i ovanstående inlägg så kan man mappa en fråga i access. Nu till nästa problem, jag har ett object(TblSeller) det fyller jag i min *.aspx.cs (PL) sedan vill jag i mitt BLL göra själva inserten i databasen...då har jag följande funktion

[red]
public int addSeller(TblSeller s)
{ 
   TblSeller newS =    (TblSeller)myORLogic.GetObject(typeof(TblSeller));
   newS = s;
   myORLogic.PersistChanges(newS);
   return newS.PkSellerId;
}
[/red]

Detta funkar inte....då newS inte får s värden....

Hur skulle ni gjort? Skulle ni göra inserten från PL ?

mv icaaq

asmodieMedlem sedan jan. 2004501 inlägg
#30

Tänkte liva upp denna tråden liten. Vet att detta kanske är ett lite uttjatat.

Några frågor. I exemplena på denna sida går man mest igenom hur man hämtar data. Jag undrar hur man gör för att
lägga till ny data, ta bort data och uppdatera data.

En annan fråga. Kan man få ut ett a objeketen i ett ObjectSet för att kunna göra något med den?
Har man tex denna koden:

ObjectSet contacts = Manager.GetObjectSet(typeof(Category), string.Empty);

Hur får jag då ut ett Contact objekt från contacts. Tex om man vill få tag på det första?

GladhMedlem sedan maj 20012 812 inlägg
#31

Hur får jag då ut ett Contact objekt från contacts. Tex om man vill få tag på det första?

Det beror på vilka funktioner som finns i ObjectSet, nu har jag aldrig använt mig av wilsons ORMapper så jag vet inte, men vanligtvis så kan man access det med en indexer.

ObjectSet contacts = Manager.GetObjectSet(typeof(Category), string.Empty);

Contact myContact = contacts[0];

Eller så hämtar man ut det med hjälp av en nyckel.

ObjectSet contacts = Manager.GetObjectSet(typeof(Category), string.Empty);

Contact myContact = contacts["my key"];

- M

asmodieMedlem sedan jan. 2004501 inlägg
#32

Ingen som har svar på min första fråga?

Några frågor. I exemplena på denna sida går man mest igenom hur man hämtar data. Jag undrar hur man gör för att
lägga till ny data, ta bort data och uppdatera data?

icaaqMedlem sedan okt. 20005 273 inlägg
#33

http://ormapper.net/Examples/?ID=BasicCRUD

Vet inte om det är vad du söker dock :r

mv icaaq

asmodieMedlem sedan jan. 2004501 inlägg
#34

Danke icaaq. Jag är lite puckad... Kollat in sidan.

Hur tycker ni ormappern funkar tillsammans med SPs?

asmodieMedlem sedan jan. 2004501 inlägg
#35

Någon som vet om man sparar mycket prestanda om man använder SP:s tillsammans med ORmappern? Man kan mer eller mindre bara använda MSSQL då.

Ett problem. Jag försökte få ut en klass av Contacts. Men det blev problem.

Contact myContact = (Contact)contacts.GetObject(0);
Problemet ligger inom parantesen GetObject(0) jag får inte ut något objekt. Hur ska jag kunna få ut ett objekt genom att använda mig av indexet i listan.

PDahlenMedlem sedan apr. 2004778 inlägg
#36

Fördelen med ORmappern och dynamisk sql är att du då kan använda den direkt med andra databaser utan att ändra nånting.
Om man använder SPs så förlorar man det.
Vad gäller prestanda mellan SPs och dynamisk sql så har det länge pågått vilda diskussioner på olika forum och utvecklarvärlden är delad i två läger.
Jag är i grunden en databaskille och har alltid föredragit SPs, men nu håller jag på att bygga in Wilsons OR Mapper i mina lösningar och jag släpper SPs helt. Dels för att jag enkelt ska kunna bygga lösningarna för olika databaser och dels för att det blir lättare att underhålla applikationerna.

asmodieMedlem sedan jan. 2004501 inlägg
#37

Jag vet faktiskt inte om det är en så stor fördel egentligen. Den största fördelen som jag ser det är att all hantering mot databaser blir mer objekt orienterad. Och man kan på en bra och enkelt sätt välja vilka objekt man vill få ut.

131 ms totalt · 3 externa anrop · v20260731065814-full.2b84b982
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)