1+ using Microsoft . EntityFrameworkCore ;
2+ using MongoDB . Bson ;
3+ using MongoDB . Driver ;
4+ using MongoDB . EntityFrameworkCore . Extensions ;
5+
6+ // start-create-instance
7+ // Replace the placeholder with your connection URI
8+ var client = new MongoClient ( "<Your connection URI>" ) ;
9+ var db = PlanetDbContext . Create ( client . GetDatabase ( "sample_planets" ) ) ;
10+ // end-create-instance
11+
12+ void FindOne ( )
13+ {
14+ // start-find-one
15+ var planet = db . Planets . FirstOrDefault ( p => p . name == "Mercury" ) ;
16+ Console . WriteLine ( planet . name ) ;
17+ // end-find-one
18+ }
19+
20+ void FindMultiple ( )
21+ {
22+ // start-find-many
23+ var planets = db . Planets . Where ( p => p . hasRings ) . ToList ( ) ;
24+
25+ foreach ( var p in planets )
26+ {
27+ Console . WriteLine ( p . name ) ;
28+ }
29+ // end-find-many
30+ }
31+
32+ void InsertOne ( )
33+ {
34+ // start-insert-one
35+ db . Planets . Add ( new Planet ( ) { name = "Pluto" , hasRings = false , orderFromSun = 9 } ) ;
36+ db . SaveChanges ( ) ;
37+ // end-insert-one
38+ }
39+
40+ void InsertMany ( )
41+ {
42+ // start-insert-many
43+ var planets = new [ ]
44+ {
45+ new Planet ( ) { _id = ObjectId . GenerateNewId ( ) , name = "Pluto" , hasRings = false , orderFromSun = 9 } ,
46+ new Planet ( ) { _id = ObjectId . GenerateNewId ( ) , name = "Scadrial" , hasRings = false , orderFromSun = 10 }
47+ } ;
48+
49+ db . Planets . AddRange ( planets ) ;
50+ db . SaveChanges ( ) ;
51+ // end-insert-many
52+ }
53+
54+ void UpdateOne ( )
55+ {
56+ // start-update-one
57+ var planet = db . Planets . FirstOrDefault ( p => p . name == "Mercury" ) ;
58+ planet . name = "Mercury the first planet" ;
59+
60+ db . SaveChanges ( ) ;
61+ // end-update-one
62+ }
63+
64+ void UpdateMany ( )
65+ {
66+ // start-update-many
67+ var planets = db . Planets . Where ( p => p . orderFromSun > 0 ) ;
68+ foreach ( var p in planets )
69+ {
70+ p . orderFromSun ++ ;
71+ }
72+
73+ db . SaveChanges ( ) ;
74+ // end-update-many
75+ }
76+
77+ void DeleteOne ( )
78+ {
79+ // start-delete-one
80+ var planet = db . Planets . FirstOrDefault ( p => p . name == "Pluto" ) ;
81+ db . Planets . Remove ( planet ) ;
82+
83+ db . SaveChanges ( ) ;
84+ // end-delete-one
85+ }
86+
87+ void DeleteMany ( )
88+ {
89+ // start-delete-many
90+ var pluto = db . Planets . FirstOrDefault ( p => p . name == "Pluto" ) ;
91+ var scadrial = db . Planets . FirstOrDefault ( p => p . name == "Scadrial" ) ;
92+ var planets = new [ ] { pluto , scadrial } ;
93+ db . Planets . RemoveRange ( planets ) ;
94+
95+ db . SaveChanges ( ) ;
96+ // end-delete-many
97+ }
98+
99+ void OrderByExample ( )
100+ {
101+ // start-order-by
102+ var planetList = db . Planets . OrderBy ( p => p . orderFromSun ) . ToList ( ) ;
103+
104+ foreach ( var p in planetList )
105+ {
106+ Console . WriteLine ( p . name ) ;
107+ }
108+ // end-order-by
109+ }
110+
111+ void DoubleOrderBy ( )
112+ {
113+ // start-order-by-then-by
114+ var planetList = db . Planets . OrderBy ( o => o . hasRings ) . ThenBy ( o => o . name ) . ToList ( ) ;
115+
116+ foreach ( var p in planetList )
117+ {
118+ Console . WriteLine ( "Has rings: " + p . hasRings + ", Name: " + p . name ) ;
119+ }
120+ // end-order-by-then-by
121+ }
122+
123+ void TakeExample ( )
124+ {
125+ // start-take
126+ var planetList = db . Planets . Take ( 3 ) . ToList ( ) ;
127+
128+ foreach ( var p in planetList )
129+ {
130+ Console . WriteLine ( p . name ) ;
131+ }
132+ // end-take
133+ }
134+
135+ void SkipExample ( )
136+ {
137+ // start-skip
138+ var planetList = db . Planets . OrderBy ( p => p . orderFromSun ) . Skip ( 5 ) . ToList ( ) ;
139+
140+ foreach ( var p in planetList )
141+ {
142+ Console . WriteLine ( p . name ) ;
143+ }
144+ // end-skip
145+ }
146+
147+ // start-db-context
148+ internal class PlanetDbContext : DbContext
149+ {
150+ public DbSet < Planet > Planets { get ; init ; }
151+
152+ public static PlanetDbContext Create ( IMongoDatabase database ) =>
153+ new ( new DbContextOptionsBuilder < PlanetDbContext > ( )
154+ . UseMongoDB ( database . Client , database . DatabaseNamespace . DatabaseName )
155+ . Options ) ;
156+
157+ public PlanetDbContext ( DbContextOptions options )
158+ : base ( options )
159+ {
160+ }
161+
162+ protected override void OnModelCreating ( ModelBuilder modelBuilder )
163+ {
164+ base . OnModelCreating ( modelBuilder ) ;
165+ modelBuilder . Entity < Planet > ( ) . ToCollection ( "planets" ) ;
166+ }
167+ }
168+ // end-db-context
169+ internal class Planet
170+ {
171+ public ObjectId _id { get ; set ; }
172+ public string name { get ; set ; }
173+ public int orderFromSun { get ; set ; }
174+ public bool hasRings { get ; set ; }
175+ }
0 commit comments