Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


nHibernate inverse = true ?

Postades av 2007-12-16 12:44:01 - kalle andersson, i forum arkitektur, Tråden har 7 Kommentarer och lästs av 1612 personer

Detta ger mig huvudvärk...någon som kan förklara detta på svenska?


Svara

Sv: nHibernate inverse = true ?

Postades av 2007-12-16 18:34:27 - Patrik H

Inverse anger vem som äger en realtion och vilken klass som skall hanterade denna.

Säg att du har två klasser, HJUL och BIL, en HJUL klass har en relation tillbaka till BIL och en BIL kan ha flera HJUL. Om du då anger Inverse=true för collectionen HJUL i BIL klassen så kommer HJUL att hantera uppdateringen, anger du Inverse=false så skall kommer BIL att hantera relationen, rekommenderar att du har Inverse=true på dina collectioner då du minskar antalet sql frågor som körs.

Hoppas det klarnade?


Svara

Sv:nHibernate inverse = true ?

Postades av 2007-12-16 19:31:58 - kalle andersson

Tack för svaret, har jag fattat det rätt....

Om jag sparar BIL och vill att även dess HJUL ska sparas då bör väl BIL äga relationen?

Alltså inverse=false -- BIL äger relationen.
Säg att jag hämtar en BIL från db. Denna har då med sig sina hjul, jag vill sedan lägga till ett reservhjul och byta färg på bilen. Jag spara BIL objektet. Det nya hjulet läggs till och bilen byter färg, eller?

OM jag sätter inverse=true.
Måste jag då först spara bilen och sedan spara hjulet för sig för att lägga till detta?






Svara

Sv: nHibernate inverse = true ?

Postades av 2007-12-16 21:51:40 - Patrik H

"Om jag sparar BIL och vill att även dess HJUL ska sparas då bör väl BIL äga relationen? "
Du kommer då att köra en sqlsats mer än vad som behövs. Ur ett objektperspektive så äger båda relationen, men titta på det som skapas i databasen, då ser du att HJUL har en FK till PK'n i BIL klassen.

Du lägger till ett hjul till och ändrar färgen.

Inverse=false
1. NH kommer att spara ner bilen och dess färg.
2. NH sparar ner det nya hjulet och samtidigt så skapar NH relationer.

Inverse=true
1. NH kommer att spara ner bilen och dess färg.
2. NH sparar ner det nya hjulet och sätter skapar relationer.
3. NH uppdaterar relationen mellan hjulet och bilen.

Om du måste spara bilen och sedan spara hjulet? Detta skall inte behövas. Kontrollera vad du har satt för cascade nivå på HJUL collectionen, testa att sätta ALL. Kontrollera också att du verkligen sätter relationerna rätt för objekten. dvs när du lägger till ett hjul för en bil så.

myCar.Wheels.Add( spareWheel);
spareWheel.Car = myCar;

Inverse anger hur relationer skall hanteras och cascade anger hur NH skall nå objekten.

Om du har ett konkret problem så skicka ett im till mig så får du min msn där å så kan vi ta det där.

/patrik


Svara

Sv: nHibernate inverse = true ?

Postades av 2007-12-16 21:52:25 - Patrik H

"Om jag sparar BIL och vill att även dess HJUL ska sparas då bör väl BIL äga relationen? "
Du kommer då att köra en sqlsats mer än vad som behövs. Ur ett objektperspektive så äger båda relationen, men titta på det som skapas i databasen, då ser du att HJUL har en FK till PK'n i BIL klassen.

Du lägger till ett hjul till och ändrar färgen.

Inverse=true
1. NH kommer att spara ner bilen och dess färg.
2. NH sparar ner det nya hjulet och samtidigt så skapar NH relationer.

Inverse=false
1. NH kommer att spara ner bilen och dess färg.
2. NH sparar ner det nya hjulet och sätter skapar relationer.
3. NH uppdaterar relationen mellan hjulet och bilen.

Om du måste spara bilen och sedan spara hjulet? Detta skall inte behövas. Kontrollera vad du har satt för cascade nivå på HJUL collectionen, testa att sätta ALL. Kontrollera också att du verkligen sätter relationerna rätt för objekten. dvs när du lägger till ett hjul för en bil så.

myCar.Wheels.Add( spareWheel);
spareWheel.Car = myCar;

Inverse anger hur relationer skall hanteras och cascade anger hur NH skall nå objekten.

Om du har ett konkret problem så skicka ett im till mig så får du min msn där å så kan vi ta det där.

/patrik


Svara

Sv:nHibernate inverse = true ?

Postades av 2007-12-16 21:53:26 - Patrik H

Det senaste svaret gäller.. skulle editera felet å då blev det ett inlägg till :)


Svara

Sv: nHibernate inverse = true ?

Postades av 2007-12-16 21:59:33 - Patrik H

"Om jag sparar BIL och vill att även dess HJUL ska sparas då bör väl BIL äga relationen? "
Du kommer då att köra en sqlsats mer än vad som behövs. Ur ett objektperspektive så äger båda relationen, men titta på det som skapas i databasen, då ser du att HJUL har en FK till PK'n i BIL klassen.

Du lägger till ett hjul till och ändrar färgen.

Inverse=true
1. NH kommer att spara ner bilen och dess färg.
2. NH sparar ner det nya hjulet och samtidigt så skapar NH relationer.

Inverse=false
1. NH kommer att spara ner bilen och dess färg.
2. NH sparar ner det nya hjulet och sätter skapar relationer.
3. NH uppdaterar relationen mellan hjulet och bilen.

Om du måste spara bilen och sedan spara hjulet? Detta skall inte behövas. Kontrollera vad du har satt för cascade nivå på HJUL collectionen, testa att sätta ALL. Kontrollera också att du verkligen sätter relationerna rätt för objekten. dvs när du lägger till ett hjul för en bil så.

myCar.Wheels.Add( spareWheel);
spareWheel.Car = myCar;

Inverse anger hur relationer skall hanteras och cascade anger hur NH skall nå objekten.

Om du har ett konkret problem så skicka ett im till mig så får du min msn där å så kan vi ta det där.

Jag satt ihop ett litet exempel som gör precis det dom du säger.

Car myCar = new Car();
myCar.Color = "Grön";

Wheel w = new Wheel();
myCar.Wheels.Add(w);

session.Save(myCar);
session.Flush();
session.Close();

Inverse=false;
NHibernate: INSERT INTO Wheels (car_id) VALUES (@p0); select SCOPE_IDENTITY(); @p0 = '1'
NHibernate: UPDATE Wheels SET car_id = @p0 WHERE wheel_id = @p1; @p0 = '1', @p1 = '5'

Inverse= true
NHibernate: INSERT INTO Wheels (car_id) VALUES (@p0); select SCOPE_IDENTITY(); @p0 = '1'


/patrik


Svara

Sv:nHibernate inverse = true ?

Postades av 2007-12-17 09:57:54 - kalle andersson

Tack för en bra förklaring!


Svara

Nyligen

  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av
  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 763
27 959
271 761
377
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies