人妖 MongoDB +MongoDB在.net Core中的诈欺+封装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(); }
图片
本站仅提供存储事业,统统现实均由用户发布,如发现存害或侵权现实,请点击举报。
热点资讯
- 2024-09-28视频专区 9月26日基金净值:博时汇享纯债债券A最新净值1.12,跌0.04%
- 2024-11-04视频专区 敌手GM:我还以为普理查德4年3000万是往复钞票 没念念到是超值协议
- 2024-12-07国产 探花 金融监管总局:援手财险机构增资扩股和刊行成本补充用具
- 2024-09-30视频专区 苏联潜艇之母——红相持想象局系列潜艇(17):镇国:北风之神
- 2024-08-30曼谷 人妖 【狐喃】状况8第24208期分析_状况8
- 2024-09-25视频专区 刚刚,“日方称一架俄军机屡次侵略日看成空”
相关资讯
- 文爱 porn 开局总冠军! 湖勇现原形?
- 视频专区 南航恢复“App家庭成员信息有生分东说念主”:系有东说念主钻破绽,即日
- 巨臀 波多黎各 女神 三江购物新提交“三江购物”商标注册请求
- 在线av 啪啪啦 CBA又一不对格顶薪先生? 单场仅2分 有沦为配角趋势
- 视频专区 《光之子》宇宙首映礼在北京得胜举办