todo
2ee6bd05196f7fbc39fe026f429e0d469bac4f32
4 files changed
src/MongoEfCore/MongoEfCore.csprojsrc/MongoEfCore/MyDbContext.cssrc/MongoEfCore/Program.cssrc/MongoExtensions.sln
diff --git a/src/MongoEfCore/MongoEfCore.csproj b/src/MongoEfCore/MongoEfCore.csproj
new file mode 100644
index 0000000..a040da0
--- /dev/null
+++ b/src/MongoEfCore/MongoEfCore.csproj
@@ -0,0 +1,18 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <OutputType>Exe</OutputType>
+ <TargetFramework>net8.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <PackageReference Include="MongoDB.EntityFrameworkCore" Version="8.1.0" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\BsonExtensions\BsonExtensions.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git a/src/MongoEfCore/MyDbContext.cs b/src/MongoEfCore/MyDbContext.cs
new file mode 100644
index 0000000..26fbc3c
--- /dev/null
+++ b/src/MongoEfCore/MyDbContext.cs
@@ -0,0 +1,36 @@
+using Microsoft.EntityFrameworkCore;
+using MongoDB.Bson;
+using MongoDB.Bson.Serialization.Attributes;
+using MongoDB.Driver;
+using MongoDB.EntityFrameworkCore.Extensions;
+
+
+namespace MongoEfCore;
+
+public class MyDbContext : DbContext
+{
+ public DbSet<Movie> Movies { get; init; }
+ public static MyDbContext Create(IMongoDatabase database) =>
+ new(new DbContextOptionsBuilder<MyDbContext>()
+ .UseMongoDB(database.Client, database.DatabaseNamespace.DatabaseName)
+ .Options);
+ public MyDbContext(DbContextOptions options) : base(options)
+ {
+ }
+ protected override void OnModelCreating(ModelBuilder modelBuilder)
+ {
+ base.OnModelCreating(modelBuilder);
+ modelBuilder.Entity<Movie>().ToCollection("movies");
+ }
+}
+public class Movie
+{
+ [BsonId]
+ public ObjectId _id { get; set; }
+ [BsonElement("title")]
+ public string Title { get; set; }
+ [BsonElement("rated")]
+ public string Rated { get; set; }
+ [BsonElement("plot")]
+ public string Plot { get; set; }
+}
diff --git a/src/MongoEfCore/Program.cs b/src/MongoEfCore/Program.cs
new file mode 100644
index 0000000..826abb2
--- /dev/null
+++ b/src/MongoEfCore/Program.cs
@@ -0,0 +1,73 @@
+
+using Microsoft.EntityFrameworkCore;
+using MongoDB.Driver;
+
+using BsonExtensions;
+
+using MongoEfCore;
+using System.Diagnostics;
+
+var connectionString = "mongodb://192.168.28.123:27017";
+
+var settings = MongoClientSettings.FromConnectionString($"{connectionString}");
+
+settings.ServerSelectionTimeout = TimeSpan.FromSeconds(1);
+
+var dbClient = new MongoClient(settings);
+
+var movies = dbClient?.GetDatabase("testdb1").GetCollection("movies");
+
+var iiii = await movies.FindAsync("{ _id : '66d48adca720951e07550d78' }");
+
+var j = iiii.FirstOrDefault();
+
+//====================================
+
+
+
+
+var client = new MongoClient(connectionString);
+
+var db = MyDbContext.Create(client.GetDatabase("testdb1"));
+
+db.Database.EnsureCreated();
+
+//for (int i = 0; i < 10000; i++)
+//{
+// var movie1 = new Movie()
+// {
+// Title = "Testbeeld " + i,
+// Rated = i.ToString(),
+// Plot = "this is movie " + i
+// };
+// db.Movies.Add(movie1);
+// var status1 = await db.SaveChangesAsync();
+//}
+
+//return;
+
+await db.Movies.FirstOrDefaultAsync();
+
+//await db.Movies.CountAsync();
+
+var sw = Stopwatch.StartNew();
+
+//var movie = await db.Movies.AsNoTracking().FirstOrDefaultAsync(m => m.Title == "Back to the Future");
+
+var movie = await db.Movies.FirstOrDefaultAsync(m => m._id == MongoDB.Bson.ObjectId.Parse("66d48adca720951e07550d78"));
+
+Console.WriteLine($"{sw.ElapsedMilliseconds}mS");
+
+if(movie == null)
+{
+ movie = new Movie()
+ {
+ Title = "Back to the Future",
+ Rated = "9",
+ Plot = "people in the past going to the future"
+ };
+ db.Movies.Add(movie);
+ var status = await db.SaveChangesAsync();
+}
+
+Console.WriteLine(movie.Plot);
diff --git a/src/MongoExtensions.sln b/src/MongoExtensions.sln
index 3138e9b..ca9ef49 100644
--- a/src/MongoExtensions.sln
+++ b/src/MongoExtensions.sln
@@ -15,6 +15,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MongoTestWeb", "MongoTestWe
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MongoGui", "MongoGui\MongoGui.csproj", "{5F48F122-637F-4471-8D56-E58ACEADFF22}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MongoEfCore", "MongoEfCore\MongoEfCore.csproj", "{B398A402-4D22-47AE-AD79-D5C2224B160B}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -45,6 +47,10 @@ Global
{5F48F122-637F-4471-8D56-E58ACEADFF22}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5F48F122-637F-4471-8D56-E58ACEADFF22}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5F48F122-637F-4471-8D56-E58ACEADFF22}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B398A402-4D22-47AE-AD79-D5C2224B160B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B398A402-4D22-47AE-AD79-D5C2224B160B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B398A402-4D22-47AE-AD79-D5C2224B160B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B398A402-4D22-47AE-AD79-D5C2224B160B}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE