吉吉影音色情电影
吉吉影音色情电影
你的位置:吉吉影音色情电影 > 清野 裸舞 > 人妖 MongoDB +MongoDB在.net Core中的诈欺+封装MongoDB障碍文类

人妖 MongoDB +MongoDB在.net Core中的诈欺+封装MongoDB障碍文类

发布日期:2024-12-06 13:07    点击次数:68

人妖 MongoDB +MongoDB在.net Core中的诈欺+封装MongoDB障碍文类

MongoDB +MongoDB在.net Core中的诈欺 一、什么是MongoDB MongoDB是一个基于散布式文献存储的数据库 MongoDB是一个介于关整个据库和非关整个据库之间的居品,短长关整个据库当中功能最丰富,最像关整个据库的。

 人妖  MonfoDB创建新集会参考:人妖

https://blog.csdn.net/lavendersue/article/details/104924258?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~default-1-104924258-blog-100642715.pc_relevant_antiscanv4&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~default-1-104924258-blog-100642715.pc_relevant_antiscanv4&utm_relevant_index=1

   创建一个新的集会

  1、大肆开放一个调出不错编写代码的场所

  

图片

 

 创建一个用户:

 

图片

--莫得会引起不实: Unable to authenticate using sasl protocol mechanism SCRAM-SHA-1.

图片

 

 

 

 

 

二、MongoDB在.net Core 6.0中的诈欺

  .net core操作mongoDB

  https://blog.csdn.net/only_yu_yy/article/details/78882446

1、编写下层类,用于生成对应裁剪库的MongoDB障碍文类使用(无须ef那种dbset<>了)--并装配所需包

  //要这些基础的身手是因为ef他正本就封好了,然而MongoDB莫得是以需要咱们我方写下

  MongoDBContextOptions

 

  生成一个用与存放字符串信息与所要集会的MongoDB数据库称呼信息的类---对应这里的信息数据是通事后头和ef障碍文/dapper障碍文在沿途的阿谁类通过构造传来的

图片

图片

 public class MongoDBContextOptions
    {
        public string Configuration { get; set; }//集会MongoDB字符串
        public string DatabaseName { get; set; } //集会对应的数据库称呼--MongoDB需要指定集会的数据库
        public MongoDBContextOptions Value { get { return this; } }
    }

图片

 

  MongoDBContext

  左证MongoDBContextOptions类中的信息,建立障碍文,起集会,取集会的数据库--这么策画便是罢了咱们为什么在ef中径直用障碍文.表.add就不错对对应数据库,对应表罢了添加

图片

图片

public class MongoDBContext
    {
        //此构造要领主要策画是接集会字符串的建立和要操作哪个数据库
        //装配包MongoDB.Driver
        private MongoClient _mongoClent;//mongodb的集会
        private readonly MongoDBContextOptions _options;  //使用强类型来给与建立信息
        private IMongoDatabase _database;

        /// <summary>
        /// 构造函数中罗致传过来的建立信息(集会字符串+操作的对应数据库)options
        /// </summary>
        /// <param name="optionsAccessor"></param>
        protected MongoDBContext(IOptions<MongoDBContextOptions> optionsAccessor)
        {
            _options = optionsAccessor.Value;
            _mongoClent = new MongoClient(_options.Configuration);  //通过options中存放的集会字符串, 起集会
            _database = _mongoClent.GetDatabase(_options.DatabaseName); //通过options中存放的数据库称呼,取得数据库


        }
        /// <summary>
        /// 取得mongodb 的集会
        /// </summary>
        public MongoClient MongoClent { get { return _mongoClent; } }

        /// <summary>
        /// 取得集会的数据库
        /// </summary>
        public IMongoDatabase Database { get { return _database; } }
    }

图片

  

  

  MongoDBContextServiceCollectionExtensions

  一个膨大,用于把MongoDB注册到容器中 

  --因为在Programe需要注册,何况要把集会字符串给带过来,是以写个膨粗略领用于注册(与ef注册时用的builder.ServicesAddDbContext()一个东西,只不外东谈主家封装好了的)

图片

图片

public static class MongoDBContextServiceCollectionExtensions
    {
        /// <summary>
        /// 是一个膨大,用于把MongoDB注册到容器中
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="services"></param>
        /// <param name="setupAction"></param>
        /// <returns></returns>
        /// <exception cref="ArgumentNullException"></exception>
        public static IServiceCollection AddMongoDBContext<T>(this IServiceCollection services, Action<MongoDBContextOptions> setupAction) where T : MongoDBContext
        {
            if (services == null)
            { throw new ArgumentNullException(nameof(services)); }
            if (setupAction == null) { throw new ArgumentNullException(nameof(setupAction)); }
            services.Configure(setupAction);
            services.AddScoped<T>();
            return services;
        }
    }

图片

 

2、左证现时的需求生成一个用于对追踪信息中所需的经、纬度、协议等信息裁剪的MongoDB障碍文

   --这一步操作就相配于ef中在一个dbcontext中许多个dbset<>,然后用的时辰调用对应的映射--罢了对对应表操作

     --而此时在MongoDB这里便是跟据前边建立的集会字符串/与库,传给上头的MongoDBContextOptions类,再由其一层一层传封装好MongoDB障碍文就不错径直对对应库表裁剪了

图片

图片

/// <summary>
    /// mongoDb障碍文   协议库的罢了
    /// </summary>
    public class ContractDbMongoDBContext : MongoDBContext
    {
        public ContractDbMongoDBContext(IOptions<MongoDBContextOptions> optionsAccessor) : base(optionsAccessor)
        {
        }
    }

图片

 

波多野结衣在线观看

3、在Progame中注册下协议MongoDB障碍文

  

图片

图片

  //注册mongodb障碍文
    builder.Services.AddMongoDBContext<ContractDbMongoDBContext>(options => { 
        options.Configuration = builder.Configuration.GetSection("MyConfig")["MongoDBConnection"];
        options.DatabaseName = "contract_db";
    });

图片

 

4、appsettings中编写MongoDB集会字符串 

图片

"MongoDBConnection": "mongodb://admin:123456@127.0.0.1:27017"

 

5、注入MongoDB障碍文

  1、注入障碍文类

图片

图片

    private ContractDbMongoDBContext _ContractDbMongoDBContext;

        /// <summary>
        /// 注入障碍文类
        /// </summary>
        /// <param name="db">ef类障碍文类</param>
        /// <param name="ContractDbMongoDBContexts">MongoDb障碍文类</param>
        public ShipperContractRepository(ProjectDbContext db, ContractDbMongoDBContext ContractDbMongoDBContexts) : base(db)
        {
            _ContractDbMongoDBContext = ContractDbMongoDBContexts;
        }

图片

 

6、使用MongoDB  

  .net core操作mongoDB  https://blog.csdn.net/only_yu_yy/article/details/78882446

 

  1、建造对应所需model

    

图片

 

  2.、对应仓储层罢了对MongoDB的操作--插入数据

  

图片

图片

/// <summary>
        ///  //协议追踪给Mongodb添加数据  添加运输协议车辆坐标
        /// </summary>
        /// <param name="cId">协议id</param>
        /// <param name="lng">经度</param>
        /// <param name="lat">维度</param>
        /// <returns></returns>
        public string ContractFreightLineLngAndLatAdd(int cId, double lng, double lat)
        {

            //1、从MongoDB障碍文取得或者创建舍弃对应信息的库(sql中的库)
            //1-1数据库不存在,也没关洽商,它会在初次使用数据库的时辰进行自动创建。
            var db = _ContractDbMongoDBContext.Database;

            //取得或者创建清爽追踪集合
            //2、咱们不错调用database的GetCollection<TDocument> 要领来取得数据集,(sql中的表)
            //2-1其中若是数据是事先界说好的不错在<输入数据的类型>  ,若是是莫得界说好的,
            //不错使用BsonDocument类型,BsonDocument示意莫得预定于的风物。
            //2-2咱们将取得到上头“db”所对应的数据库中的“freight_line”集合,
            //即使“freight_line”集合不存在也没关洽商,
            //同数据库相同,若数据集不存在,会自动创建该数据集。
            var collection = db.GetCollection<ContractFreightLine>("freight_line");

            //实例一个集合用于添加
            ContractFreightLine ContractFreightLineInfo = new ContractFreightLine()
            {
                id = new ObjectId(),
                cid = cId,
                lng = lng,
                lat = lat,
                created_date = DateTime.Now
            };
            //左证MongoDB障碍文插入数据--向集合中插入数据
            //InsertOne(同步插入)或InsertOneAsync(异步插入)要领。
            collection.InsertOne(ContractFreightLineInfo);

            //复返主键ID
            return ContractFreightLineInfo.id.ToString();
        }

图片

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

本站仅提供存储事业,统统现实均由用户发布,如发现存害或侵权现实,请点击举报。