【发布时间】:2020-04-09 14:12:18
【问题描述】:
我正在研究 asp.net core 和 mongo db。在这里,我正在尝试使用以下代码实现事务支持
using (var session = await _mongoClient.StartSessionAsync())
{
try
{
session.StartTransaction();
await _dbCollection.InsertOneAsync(session,obj);
//throw new Exception("No document found");
await session.CommitTransactionAsync();
}
catch (Exception ex)
{
//session.AbortTransaction();
await session.AbortTransactionAsync();
}
}
但它正在抛出异常
MongoDB.Driver.MongoCommandException:此 MongoDB 部署不 支持可重试写入。请将 retryWrites=false 添加到您的 连接字符串。
下面的代码,我用来创建连接
_mongoClient = new MongoClient(config.GetConnectionString("CarGalleryDb"));
//MongoClientSettings mongoClientSettings = new MongoClientSettings();
//mongoClientSettings.RetryWrites = false;
_db = _mongoClient.GetDatabase(config.GetConnectionString("DBName"));
我的连接字符串是
"ConnectionStrings": {
"CarGalleryDb": "mongodb://localhost:27017?retryWrites=false",
"DBName": "MongoTestDB"
},
谁能支持我解决这个问题?
【问题讨论】:
-
你的连接字符串是什么?连接字符串末尾有
retryWrites=false吗? -
"mongodb://localhost:27017?retryWrites=false" 这个是我的连接字符串
-
_mongoClient = new MongoClient(config.GetConnectionString("ConnectonString")); _db = _mongoClient.GetDatabase(config.GetConnectionString("DBName"));
-
如何初始化你的客户端?您也可以尝试使用
MongoClientSettings.RetryWrites。我添加了一个答案,请检查 -
@SelimYıldız,抱歉回复晚了。它对我不起作用。我已经用我正在使用的连接创建代码和连接字符串更新了这个问题。
标签: asp.net mongodb asp.net-core