MongoDB连接数据库 配合ET框架使用
.
// An highlighted block
using ETModel;
using Microsoft.IdentityModel.Protocols;
using MongoDB.Bson;
using MongoDB.Driver;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using WebServer.Modes;
namespace WebServer.ServerLogic
{
public class Db
{
public static string connStr;
public static string dbName;
public static string DBRecordName;
private static IMongoDatabase db = null;
private static readonly object lockHelper = new object();
private Db() { }
public static IMongoDatabase GetDb()
{
if (db == null)
{
lock (lockHelper)
{
if (db == null)
{
var client = new MongoClient(connStr);
db = client.GetDatabase(dbName);
}
}
}
return db;
}
}
public class dbProxy
{
public async Task<List<T>> QueryJson<T>(string json)
{
IMongoCollection<T> collection = Db.GetDb().GetCollection<T>(typeof(T).Name);
BsonDocument document = MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonDocument>(json);
return collection.Find(document).ToList();
}
public async Task<T> Query<T>(long id)
{
IMongoCollection<T> collection = Db.GetDb().GetCollection<T>(typeof(T).Name);
var query = new BsonDocument("_id", id);
return collection.Find(query).ToList().FirstOrDefault();
}
public async Task Save<T>(T entity, bool isSave = true)
{
IMongoCollection<T> collection = Db.GetDb().GetCollection<T>(typeof(T).Name);
await collection.InsertOneAsync(entity);
}
public async Task Update<T>(T entity,long id)
{
IMongoCollection<T> collection = Db.GetDb().GetCollection<T>(typeof(T).Name);
var filter = Builders<T>.Filter.Eq("Id", id);
await collection.ReplaceOneAsync(filter, entity);
}
public async Task delete<T>(T entity, long id)
{
IMongoCollection<T> collection = Db.GetDb().GetCollection<T>(typeof(T).Name);
var filter = Builders<T>.Filter.Eq("Id", id);
collection.DeleteOne(filter);
}
}
}