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 och Collections i domänmodellen

Postades av 2007-08-30 14:40:47 - Niclas Pehrsson, i forum arkitektur, Tråden har 5 Kommentarer och lästs av 1501 personer

Hej jag undrar lite hur ni tänker när ni använder er av collections med NHibernate i domänmodellen.
Det finns ju lite olika typer man kan använda sig av.

Frågan har egentligen inte så mycket med hur NHibernate och Collections fungerar utan hur man på ett snyggt sätt skall lösa listornas funktionalitet i domänmodellen.

Här är ett exempel.

Jag har en användare, en användare kan tillhöra en behörighetsgrupp.
En behörighetsgrupp kan ha en till flera användare i sig.

Behörighetsgruppen kan inte ha ha fler än en och samma användare, det skall alltså inte gå att lägga till flera stycken av en användare.

Om någon försöker lägga till en användare som redan ligger i behörighetsgruppen vill jag kasta ett exception som jag skapat.

Antingen hade jag kunnat lägga denna funktionalitet i Behörighetsgruppsklassen men det går ju fortfarande att ta add på en IList.

Så mitt alternativ är att ha en private eller protected IList PrivateMemberList property och en singleton property i min Behörighetsklass som heter UserGroupCollection som tar new UserGroupCollection(this.PrivateMemberList) som implemmenterar den lägg till funktionalitet eller inte innehåller add så att jag kan göra detta från Behörighetsklassen.
Det jagt tycker är lite fult då är att min domänmodell har blivit anpassad efter NHibernate vilket jag inte tycker är jättebra.

Så jag undrar finns det något annat sätt att lösa detta på?


Svara

Sv: NHibernate och Collections i domänmodellen

Postades av 2007-08-30 15:09:25 - Roger Alsing

en av de list typer som följer med NH är väl "set"
och i ett set kan man ju inte lägga till en o samma sak flera ggr


Svara

Sv:NHibernate och Collections i domänmodellen

Postades av 2007-08-30 15:10:21 - Niclas Pehrsson

Vad blir det för exception när man försöker göra det?


Svara

Sv: NHibernate och Collections i domänmodellen

Postades av 2007-08-31 14:32:58 - Magnus Gladh

Du skulle kunna låta din behörighetslista vara en hashtabel där nycklen för hashtablen är typ användarens ID. Eftersom du måste ha unika nyklar i hashtabellen så kan du inte lägga till samma användare flera gånger.

Ett annat kanske snyggare alternativ är att du skapar en specifik behörighetslista som ärver från typ List<T> där du i Add-methoden loopar igenom din lista för att se om denna användare redan finns en gång och om den finns så kan du kasta ditt eget exception som du gjort.

Fördelen här är ju att ingen av dina "listor" har något med Hibernat att göra...

- M


Svara

Sv:NHibernate och Collections i domänmodellen

Postades av 2007-08-31 14:47:35 - Patrik Löwendahl

Nackdelen är att du låser dig helt för vilken typ av listan du kan använda.

Det är bättre att jobba med IList<T> eller IDictionary<T> eller liknande och låta NH returnera ngt som passar. Vill du sen byta ut dem så behöver du inte fundera på de som använder listan utan bara på funktionen som returnerar rätt typ.


Svara

Sv: NHibernate och Collections i domänmodellen

Postades av 2007-09-02 11:37:34 - Niclas Pehrsson

Jag funderar på att kapsla in IList så att man bara kan läsa från den. Och sedan implemmentera en metod på entiteten som sköter inmatandat och borttagandet av grupper som en använder kan vara med i.

När metoden skall 2 inlägganden ske, användaren skall läggas till i användargruppens lista av medlemmar plus att användaren skall lägga till användargruppen i sin egen lista, för detta sker inte automatiskt har jag insett.

Sedan är en tråkig sak med att använda bag och om man vill ha en many-to-many koppling är att när man genererar databasen så blir indextabellen inte keys utan den tillåter dubletter, vilket är tråkigt.
Någon som har något tips?

En tanka var ett kapsla in ISet<T>, finns det några färdiga Wrapperklasser som gör om en ISet till en IList?


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
647
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