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


Arkitekturfråga angående persistens

Postades av 2008-07-19 01:16:53 - Niclas Pehrsson, i forum arkitektur, Tråden har 3 Kommentarer och lästs av 1388 personer

Tänkte kika hur ni tänker i liknande scenarion.

Säg att vi har en klassen

Auction

Klassen innehåller metoden AddBid(decimal bid).

Skall metoden AddBid se till att budet lagras direkt med ett anrop till en repository?
Eller skall utvecklaren bli tvungen att utföra.

auction.AddBid(decimal bid);
session.Save(auction);

Budet måste ju vara över dom nuvarande så en kontroll mot datakällan bör väl göras i vilket fall som helst. Annars kan det ju ske fel vid budgivandet.

Samma sak är det ju egentligen med ChangePassword(string oldPassword, string newPassword);

Men inte när man gör en Person.Name = "Niclas";

Hur tänker ni? Tycker ni att man låser sin domänmodell för mycket mot repositories eller är det egentligen helt okej i dessa fall.


Svara

Sv: Arkitekturfråga angående persistens

Postades av 2008-07-19 03:10:00 - Johan Normén

Hej,

Jag skulle antingen låta det sparas när man sparar Auctionen, men det beror på om det är ett tillstånd eller en handling. Är det en handling vill man nog spara det rätt omgående då skulle jag ev ha en AuctionService som i sin tur nyttjar repositories. Där AuctionService har en metod som ser till så biddet sparas till rätt Auction i DBn.

mvh Johan


Svara

Sv:Arkitekturfråga angående persistens

Postades av 2008-07-19 11:27:54 - Niclas Pehrsson

auctionService.MakeBid(Auction auction, decimal bid, UserAccount userAccount)
{
// Validera inparameterar.
// Validera budet.
// Lägg till budet till auction.
// Spara
}


Svara

Sv: Arkitekturfråga angående persistens

Postades av 2008-07-19 21:12:05 - Niclas Pehrsson

Har funderat lite mer på min fråga.

Alternativet hade ju varit att koppla

MakeBid på Auction
[Kod]
auction.MakeBid(decimal bid, User user)
{
// Hämta repository eller liknande för Auction. (via factory/event eller liknande).
if(!auctionRepository.IsHighestBid(this, bid))
{
throw InvalidOperationException("...");
}

Bid newBid = new Bid(User, bid);
this.currentBid = newBid;
this.Bids.Add(newBid);

auctionRepository.Save(this);
}
[/Kod]

Alternativt om man inte vill att hela auktionen skall sparas.

[Kod]
auction.MakeBid(decimal bid, User user)
{
// Hämta repository eller liknande för Auction.
if(!auctionRepository.IsHighestBid(this, bid))
{
throw InvalidOperationException("...");
}

Bid newBid = new Bid(User, bid);
this.currentBid = newBid;
this.Bids.Add(newBid);

auctionRepository.SaveBid(this, newBid);
}
[/Kod]

Ännu ett alternativ kanske hade varit att lägga ut auctionRepository.IsHighestBid(this, bid) och SaveBid som event där någon som lyssnar på event sköter nersparandet då blir det ganska löst kopplat men mer kompext vilket jag vill undvika.

Hur hade ni gjort i dessa situationer där ändringen i objektmodellen måste kontrolleras mot lagringen? Och helst spara ner förändringen direkt.


Svara

Nyligen

  • 18:37 Remove the bumper in AUDI
  • 15:35 Chicken road crash game
  • 21:41 Automotive Services UK
  • 20:44 Erfarenhet av CBD-olja mot sömnpro
  • 12:13 Sex Dolls for Sale
  • 19:42 Online Casinos for Haitian Players
  • 19:38 Rekommendera något intressant
  • 19:13 Международная перевозка грузов

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 890
27 965
271 778
559
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