雷达智富

首页 > 内容 > 程序笔记 > 正文

程序笔记

C#使用EntityFrameworkCore ORM方式操作MongoDB数据库

2024-06-14 61

Entity Framework Core Provider 通过将数据映射到 .NET 对象来简化对 MongoDB 集群中数据的操作。

MongoDB Atlas 是一种完全托管的云数据库服务,可在 MongoDB 集群上托管您的数据。在本指南中,我们将向您展示如何开始使用您自己的免费(无需信用卡)集群。

按照以下步骤将 Entity Framework Core Provider 应用程序连接到 MongoDB Atlas 集群。

MongoDB.EntityFrameworkCore安装

dotnet add package MongoDB.EntityFrameworkCore --prerelease

BaseDbContext基类

public class BaseDbContext: DbContext
 {

     protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
     {
         var connectionString = "mongodb://localhost:27017";
         optionsBuilder.UseMongoDB(connectionString, "sample_mflix");
     }
 }

Collection DbContext操作类

internal class MflixDbContext : BaseDbContext
{
    public DbSet<Movie> Movies { get; init; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
        modelBuilder.Entity<Movie>().ToCollection("movies");
    }
}

Collection实体类

internal class Movie
{
    public ObjectId _id { get; set; }
    public string title { get; set; }
    public string rated { get; set; }
    public string plot { get; set; }
}

查询Collection数据

var db = new MflixDbContext();

  List<Movie> listMovie = db.Movies.Where(m => m.title == "Pluto").ToList();
Console.WriteLine(listMovie[0].plot);

删除Collection数据

var db = new MflixDbContext();
 db.Movies.rtRemove(listMovie[0]);
 db.SaveChanges();

插入Collection数据

db.Movies.Add(new Movie()
 {
     title = "Pluto",
     rated = "ia",
     plot = "asdd",
 });
 db.SaveChanges();

批量插入Collection数据

 var movies = new[]
 {
     new Movie()
     {
         _id = ObjectId.GenerateNewId(),
         title = "Pluto1",
         rated = "ia1",
         plot = "asdd1",
     },
     new Movie()
     {
         _id = ObjectId.GenerateNewId(),
         title = "Pluto2",
         rated = "ia2",
         plot = "asdd2",
     }
 };
 db.Movies.AddRange(movies);
 db.SaveChanges();

更新Collection数据

Movie movie = db.Movies.Where(m => m.title == "Pluto").FirstOrDefault();
movie.title = "更新数据";
db.Movies.Update(movie);
db.SaveChanges();

静态运行效果图

参考文档

https://www.mongodb.com/docs/entity-framework/current/quick-start/

更新于:4个月前
赞一波!

文章评论

评论问答