[英]Clearing MongoDb keys on IIS website
IIS和Mongo的新手,我正在尝试寻找一种方法来清除服务器中的密钥,以避免出现“已添加具有相同密钥的项目”的异常。
IMongoDatabase _db;
IMongoCollection<BoardStorageItem> _boardsCollection;
public MongoDb()
{
var client = new MongoClient("mongodb://localhost");
_db = client.GetDatabase("KanbanDemonstration");
BsonClassMap.RegisterClassMap<CardStorageItem>();
BsonClassMap.RegisterClassMap<ColumnStorageItem>();
BsonClassMap.RegisterClassMap<BoardStorageItem>();
BsonClassMap.RegisterClassMap<EmployeeStorageItem>();
_boardsCollection = _db.GetCollection<BoardStorageItem>("Board");
}
public BoardStorageItem GetBoardByName(string name)
{
var board = _boardsCollection.AsQueryable().FirstOrDefault(b => b.Name == name);
return board;
}
public class MongoConverter
{
MongoDb _mongoDb;
public MongoConverter()
{
_mongoDb = new MongoDb();
}
public BoardStorageItem GetBoardByName(string name)
{
return _mongoDb.GetBoardByName(name);
}
}
然后是网页本身上的代码
protected void Button1_Click(object sender, EventArgs e)
{
_mongoConverter = new MongoConverter();
var board = _mongoConverter.GetBoardByName(TextBox1.Text);
BoardName = board.Name;
BoardId = board.Id;
Label3.Text = BoardName;
Label4.Text = BoardId;
Session.Clear();
}
这是我第一次使用该按钮获取电路板时的效果,但是如果第二次尝试,尝试新建MongoConverter时会出现异常“已添加具有相同键的项目”。 我以为在清除会话后也将清除密钥,但是似乎唯一可行的方法是重置服务器本身。
每种类型只能调用BsonClassMap.RegisterClassMap<T>()
。 并且应该在应用程序启动时完成,然后根据文档打开任何数据库连接。
由于您使用的是ASP.NET,因此请将其放在全局应用程序类(global.asax)的Application_Start事件中
void Application_Start(object sender, EventArgs e)
{
BsonClassMap.RegisterClassMap<CardStorageItem>();
BsonClassMap.RegisterClassMap<ColumnStorageItem>();
BsonClassMap.RegisterClassMap<BoardStorageItem>();
BsonClassMap.RegisterClassMap<EmployeeStorageItem>();
}
您可以创建另一个调用它的方法,这样就不会污染全局应用程序类。 当然,从构造函数中删除注册。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.