Koble enkelt til RavenDB-data via C #

Forrige uke undersøkte vi NoSQL-bevegelsen ved å bruke RavenDB som et godt eksempel. Med Microsofts velsignelse har RavenDB blitt omfavnet av .NET-samfunnet. RavenDB-installasjonen inkluderer omfattende eksempelkode med rikelig med dokumentasjon tilgjengelig online. Denne uken ser vi nærmere på det grunnleggende om å bruke RavenDB som datalager og hvordan du kan bruke C # til å jobbe med det.

Jobber med .NET-klient-API

Den enkleste måten å grensesnitt mot et RavenDB-dokumentlager er gjennom .NET-klient-API. Du får tilgang til API via Raven.Client.Lightweight-3.5.dll-filen, som du finner i Client-3.5-katalogen til RavenDB-installasjonen. (Versjonsnummeret - 3.5 i dette tilfellet - kan endres med fremtidige RavenDB-utgivelser.) Hvis du bruker Visual Studio, legger du til en referanse til denne DLL i prosjektet. Når denne referansen er lagt til, kan en brukende setning brukes til å legge til en referanse i koden (f.eks. Ved å bruke Raven.Client).

Når referansen er lagt til, er det to trinn for å jobbe med dokumentlageret:

  1. Koble til dokumentlageret: Du kobler til RavenDB-dokumentlagringsforekomsten. Det anbefales at det opprettes en forekomst av dokumentlagre per applikasjon.
  2. Lag en økt: Du oppretter en økt via dokumentlageret. Du må opprette en øktforekomst hver gang du må samhandle med dokumentlageret.

Når dokumentlageret og øktobjekter er instantivert, kan du samhandle med RavenDB-installasjonen. Dette kan omfatte å legge til dokumenter, oppdatere dokumenter, spørre i datalageret og så videre. Følgende koden inneholder øyeblikkelig dokumentlagrings- og sesjonsobjekter ved å bruke min lokale RavenDB-installasjon.

 var documentStore = new Raven.Client.Document.DocumentStore {Url = "http: // localhost: 8080"}; 

documentStore.Initialize ();

bruker (var session = documentStore.OpenSession ())

{

// Arbeid med dokumentlager

}

Koden bruker den komplette objektbanen for å demonstrere hvor de befinner seg i navnefeltet, men som tidligere nevnt kan dette forkortes via det brukende nøkkelordet i kodehodet. Den første linjen oppretter en forekomst av DocumentStore-klassen ved hjelp av nettadressen til RavenDB-installasjonen. Den neste linjen instantiarerer DocumentStore-objektet med den følgende linjen (bruker setning) for å lage en økt via DocumentStore. Når økten er opprettet, kan du enkelt samhandle med RavenDB dokumentlager.

Arbeider med dokumenter

Som vi utforsket i mitt forrige innlegg fra Software Engineer, er RavenDB et dokumentsentrisk datalager. Som et eksempel vil vi lagre informasjon om nettstedet i RavenDB-backend. Nettstedets nettadresse vil bli lagret sammen med en tittel og notater. Følgende C # klasse vil kartlegge dette til vår dokumenttype.

 offentlig klasse nettsted 

{

offentlig streng Tittel {get; sett; }

offentlig streng URL {get; sett; }

offentlig streng Merknader {få; sett; }

}

Koden for å legge til et dokument bygger på det tidligere eksemplet der en økt blir opprettet. Koden tar den litt videre ved å legge til et dokument (bruker klassen) i butikken. Når økten er opprettet, opprettes og fylles en forekomst av klassen Nettsted med dataene som skal lagres. Økten Store-metoden lagrer det nye dokumentet i økten. Du kan opprette flere dokumenter og lagre dem til du er klar til å lagre endringene. SaveChanges-metoden legger dataene i RavenDB-forekomsten.

 var documentStore = new Raven.Client.Document.DocumentStore {Url = "http: // localhost: 8080"}; 

documentStore.Initialize ();

var nettsted = nytt nettsted {

Tittel = "CNet TV",

URL = "http://cnettv.cnet.com",

Notes = "Tekniske show"

};

bruker (var session = documentStore.OpenSession ()) {

session.Store (området);

session.SaveChanges ();

}
Figur A viser dokumentet som er lagt til i datalageret via RavenDB Web-grensesnitt. Figur A

Dokument lagt til RavenDB vist i webgrensesnittet (Klikk på bildet for å forstørre.)

Det er interessant å se hva som er lagt til dokumentmetadataene (se fanen Metadata i figur A), samt hva følgende liste viser; RavenDB bruker navnefeltet til applikasjonen (RavenDB1) og klassens navn på enheten (Nettsteder) for å tilordne metadataegenskaper.

 { 

"Raven-Entity-Name": "Nettsteder",

"Raven-Clr-Type": "RavenDB1.Site, RavenDB1"

}

Et interessant aspekt ved å legge til dette dokumentet er hvordan identifiserer du det etter at det er lagt til? Det vil si at i den relasjonelle verden er det sentrale verdier på tabeller som tjener mange formål med en som tildeler en unik identifiserende verdi til en rad med data. Selv om RavenDB ikke er relasjonelt, bruker den nøkkelverdier for å identifisere et dokument, og dette kan enkelt integreres i koden. Det første trinnet er å legge til en streng-ID-egenskap til objektet vårt. Når dette er lagt til, fyller du ikke det når et dokument opprettes, men RavenDB vil fylle det med en identifiserende verdi. Følgende konsollapplikasjon demonstrerer denne tilnærmingen.

 namespace RavenDB1 { 

offentlig klasse nettsted {

offentlig streng Id {get; sett; }

offentlig streng Tittel {get; sett; }

offentlig streng URL {get; sett; }

offentlig streng Merknader {få; sett; }

}

klasse Program {

statisk tomrom Main (streng args) {

var documentStore = new Raven.Client.Document.DocumentStore {Url = "http: // localhost: 8080"};

documentStore.Initialize ();

var side = nytt nettsted {Tittel = "CNet TV", URL = "http://cnettv.cnet.com", Notes = "Teknisk show"};

bruker (var session = documentStore.OpenSession ()) {

session.Store (området);

session.SaveChanges ();

Console.WriteLine ("ID:" + nettsted.Id);

}}}}

Den siste linjen viser ID-verdien til det nyopprettede dokumentet (sites / 193 i mitt tilfelle); dette er ikke den eneste måten å jobbe med ID-verdier - en oversikt er tilgjengelig online. Selv om det er nyttig å legge til dokumenter, spør den virkelige kraften i en datalager dataene. RavenDB-plattformen bruker LINQ-syntaks, så den følger ikke den tradisjonelle RDBMS-verdenen der SELECT-setninger brukes. Følgende eksempel bygger på den forrige koden for å hente alle dokumenter fra datalageret som har en verdi på CNET som tittel.

 var documentStore = new Raven.Client.Document.DocumentStore {Url = "http: // localhost: 8080"}; 

documentStore.Initialize ();

bruker (var session = documentStore.OpenSession ()) {

var nettsteder = økt. Spørsmål ()

.Hvor (x => x.Tittel == "CNet")

.Ramse opp();

for (int i = 0; i <nettsteder. Antall; i ++) {

Console.WriteLine (nettsteder i .Title + "-" + nettsteder i .URL);

}}

Sessjonsspørsmetoden brukes til å utstede LINQ-kommandoen, som inkluderer en Hvor skal du definere hva du skal velge, og ToList-metoden konverterer resultatene til et GenericList-objekt. Til slutt brukes en for-loop for å gå gjennom resultatene, som vises i konsollen.

Utgangspunktet

Som en utvikler som har jobbet med relasjonsdatabasesystemer i årevis, har det å jobbe med RavenDB vært en hyggelig opplevelse med litt uro da jeg vasset gjennom et mindre stivt system. .NET-klient-APIen som følger med en RavenDB-installasjon gjør det enkelt å komme i gang med dokumentlageret på kort tid. De enkle eksemplene i dette innlegget bygger grunnlaget for mye mer avansert integrasjon.

Har du hoppet på NoSQL-bandwagon, eller gjør det deg urolig? Bruker du for tiden RavenDB eller et alternativ? Del tankene og opplevelsene dine med samfunnet.

© Copyright 2020 | mobilegn.com