public class PlanetDbContext : DbContext { public DbSet < Planet > Planets { get ; init ; } = null ! ;
public static PlanetDbContext Create ( IMongoDatabase database ) => new ( new DbContextOptionsBuilder < PlanetDbContext > ( ) . UseMongoDB ( database . Client , database . DatabaseNamespace . DatabaseName ) . Options ) ;
public PlanetDbContext ( DbContextOptions options ) : base ( options ) { }
protected override void OnModelCreating ( ModelBuilder modelBuilder ) { base . OnModelCreating ( modelBuilder ) ; modelBuilder . Entity < Planet > ( ) . ToCollection ( "planets" ) ; modelBuilder . Entity < Planet > ( ) . Property < string [ ] > ( "mainAtmosphere" ) ; } }
Create an Instance of the DBContext Guide
var client = new MongoClient ( "<connection string URI>" ) ; var db = PlanetDbContext . Create ( client . GetDatabase ( "sample_guides" ) ) ;
var planet = db . Planets . FirstOrDefault ( p => p . name == "Mercury" ) ; Console . WriteLine ( planet ? . name ) ;
var planets = db . Planets . Where ( p => p . hasRings ) ;
foreach ( var p in planets ) { Console . WriteLine ( p . name ) ; }
db . Planets . Add ( new Planet ( ) { name = "Pluto" , hasRings = false , orderFromSun = 9 } ) ;
db . SaveChanges ( ) ;
var planets = new [ ] { new Planet ( ) { _id = ObjectId . GenerateNewId ( ) , name = "Pluto" , hasRings = false , orderFromSun = 9 } , new Planet ( ) { _id = ObjectId . GenerateNewId ( ) , name = "Scadrial" , hasRings = false , orderFromSun = 10 } } ;
db . Planets . AddRange ( planets ) ; db . SaveChanges ( ) ;
var planet = db . Planets . FirstOrDefault ( p => p . name == "Mercury" ) ; planet ! . name = "Mercury the first planet" ;
db . SaveChanges ( ) ;
var planets = db . Planets . Where ( p => p . orderFromSun > 0 ) ; foreach ( var p in planets ) { p . orderFromSun ++ ; }
db . SaveChanges ( ) ;
var planet = db . Planets . FirstOrDefault ( p => p . name == "Pluto" ) ; db . Planets . Remove ( planet ! ) ;
db . SaveChanges ( ) ;
var pluto = db . Planets . FirstOrDefault ( p => p . name == "Pluto" ) ; var scadrial = db . Planets . FirstOrDefault ( p => p . name == "Scadrial" ) ; var planets = new [ ] { pluto ! , scadrial ! } ; db . Planets . RemoveRange ( planets ) ;
db . SaveChanges ( ) ;
var planetList = db . Planets . OrderBy ( p => p . orderFromSun ) ; foreach ( var p in planetList ) { Console . WriteLine ( p . name ) ; }
var planetList = db . Planets . OrderBy ( o => o . hasRings ) . ThenBy ( o => o . name ) ;
foreach ( var p in planetList ) { Console . WriteLine ( "Has rings: " + p . hasRings + ", Name: " + p . name ) ; }
var planetList = db . Planets . Take ( 3 ) ;
foreach ( var p in planetList ) { Console . WriteLine ( p . name ) ; }
var planetList = db . Planets . OrderBy ( p => p . orderFromSun ) . Skip ( 5 ) ;
foreach ( var p in planetList ) { Console . WriteLine ( p . name ) ; }