Reden Sie keinen Unsinn und gehen Sie einfach zum Code >


using MongoDB.Bson.Serialization.Attributes;namespace XL.Core.MongoDB {public interface IEntity<tkey>{/// <summary>/// 主键/// </summary> [BsonId] TKey Id { get; set; } } }</tkey>


[BsonIgnoreExtraElements(Inherited = true)]public abstract class Entity : IEntity<string>{/// <summary>/// 主键/// </summary> [BsonRepresentation(BsonType.ObjectId)]public virtual string Id { get; set; } }</string>


public interface IRepository<t> : IQueryable<t> where T : IEntity<tkey>{#region Fileds/// <summary>/// MongoDB表/// </summary>IMongoCollection<t> DbSet { get; }/// <summary>/// MongoDB库/// </summary>IMongoDatabase DbContext { get; }#endregion#region Find/// <summary>/// 根据主键获取对象/// </summary>/// <param>/// <returns></returns> T GetById(TKey id);/// <summary>/// 获取对象/// </summary>/// <param>/// <returns></returns>IEnumerable<t> Get(Expression<func>> predicate);/// <summary>/// 获取对象/// </summary>/// <param>/// <param>/// <returns></returns>Task<ienumerable>> GetAsync(Expression<func>> predicate, CancellationToken cancellationToken = default(CancellationToken));#endregion#region Insert/// <summary>/// 插入文档/// </summary>/// <param>/// <returns></returns> T Insert(T entity);/// <summary>/// 异步插入文档/// </summary>/// <param>/// <param>/// <returns></returns>Task InsertAsync(T entity, CancellationToken cancellationToken = default(CancellationToken));/// <summary>/// Adds the new entities in the repository./// </summary>/// <param>The entities of type T.void Insert(IEnumerable<t> entities);/// <summary>/// 插入文档/// </summary>/// <param>/// <param>/// <returns></returns>Task InsertAsync(IEnumerable<t> entities, CancellationToken cancellationToken = default(CancellationToken));#endregion#region Update/// <summary>/// 更新文档/// </summary>/// <param>/// <returns></returns> UpdateResult Update(T entity);/// <summary>/// 异步更新文档/// </summary>/// <param>/// <param>/// <returns></returns>Task<updateresult> UpdateAsync(T entity, CancellationToken cancellationToken = default(CancellationToken));#endregion#region Delete/// <summary>/// 根据主键ID/// </summary>/// <param>/// <returns></returns> T Delete(TKey id);/// <summary>/// 异步根据ID删除文档/// </summary>/// <param>/// <param>/// <returns></returns>Task<t> DeleteAsync(TKey id, CancellationToken cancellationToken = default(CancellationToken));/// <summary>/// 异步删除/// </summary>/// <param>/// <param>/// <returns></returns>Task<deleteresult> DeleteAsync(Expression<func>> predicate, CancellationToken cancellationToken = default(CancellationToken));/// <summary>/// 删除/// </summary>/// <param>/// <returns></returns>DeleteResult Delete(Expression<func>> predicate);#endregion#region Other/// <summary>/// 计数/// </summary>/// <param>/// <returns></returns>long Count(Expression<func>> predicate);/// <summary>/// 计数/// </summary>/// <param>/// <param>/// <returns></returns>Task<long> CountAsync(Expression<func>> predicate, CancellationToken cancellationToken = new CancellationToken());/// <summary>/// 是否存在/// </summary>/// <param>/// <returns></returns>bool Exists(Expression<func>> predicate);#endregion#region Query/// <summary>/// 分页/// 注:只适合单属性排序/// </summary>/// <param>/// <param>/// <param>/// <param>/// <returns></returns>IEnumerable<t> Paged(Expression<func>> predicate, Expression<func>> sortBy,int pageSize, int pageIndex = 1);/// <summary>/// /// </summary>/// <param>/// <param>/// <param>/// <param>/// <param>/// <returns></returns>Task<list>> PagedAsync(Expression<func>> predicate, Expression<func>> sortBy,int pageSize, int pageIndex = 1, CancellationToken cancellationToken = new CancellationToken());#endregion} public interface IRepository<t> : IRepository<t>where T : IEntity<string>{ }</string></t></t></func></func></list></func></func></t></func></func></long></func></func></func></deleteresult></t></updateresult></t></t></func></ienumerable></func></t></t></tkey></t></t>


public class MongoRepository<t> : IRepository<t> where T : IEntity<string>{#region Constructorprotected MongoRepository(IMongoCollection<t> collection) { DbSet = collection; DbContext = collection.Database; }#endregionpublic IEnumerator<t> GetEnumerator() {return DbSet.AsQueryable().GetEnumerator(); } IEnumerator IEnumerable.GetEnumerator() {return GetEnumerator(); }#region 字段public Type ElementType => DbSet.AsQueryable().ElementType;public Expression Expression => DbSet.AsQueryable().Expression;public IQueryProvider Provider => DbSet.AsQueryable().Provider;public IMongoCollection<t> DbSet { get; }public IMongoDatabase DbContext { get; }#endregion#region Findpublic T GetById(string id) {return Get(a => a.Id.Equals(id)).FirstOrDefault(); }public IEnumerable<t> Get(Expression<func>> predicate) {return DbSet.FindSync(predicate).Current; }public async Task<ienumerable>> GetAsync(Expression<func>> predicate, CancellationToken cancellationToken = new CancellationToken()) {var task = await DbSet.FindAsync(predicate, null, cancellationToken);return task.Current; }#endregion#region Insertpublic T Insert(T entity) { DbSet.InsertOne(entity);return entity; }public Task InsertAsync(T entity, CancellationToken cancellationToken = new CancellationToken()) {return DbSet.InsertOneAsync(entity, null, cancellationToken); }public void Insert(IEnumerable<t> entities) { DbSet.InsertMany(entities); }public Task InsertAsync(IEnumerable<t> entities, CancellationToken cancellationToken = new CancellationToken()) {return DbSet.InsertManyAsync(entities, null, cancellationToken); }#endregion#region Updatepublic UpdateResult Update(T entity) {var doc = entity.ToBsonDocument();return DbSet.UpdateOne(Builders<t>.Filter.Eq(e => e.Id, entity.Id),new BsonDocumentUpdateDefinition<t>(doc)); }public Task<updateresult> UpdateAsync(T entity, CancellationToken cancellationToken = new CancellationToken()) {var doc = entity.ToBsonDocument();return DbSet.UpdateOneAsync(Builders<t>.Filter.Eq(e => e.Id, entity.Id),new BsonDocumentUpdateDefinition<t>(doc), cancellationToken: cancellationToken); }#endregion#region Deletepublic T Delete(string id) {return DbSet.FindOneAndDelete(a => a.Id.Equals(id)); }public Task<t> DeleteAsync(string id, CancellationToken cancellationToken = new CancellationToken()) {return DbSet.FindOneAndDeleteAsync(a => a.Id.Equals(id), null, cancellationToken); }public Task<deleteresult> DeleteAsync(Expression<func>> predicate, CancellationToken cancellationToken = new CancellationToken()) {return DbSet.DeleteManyAsync(predicate, cancellationToken); }public DeleteResult Delete(Expression<func>> predicate) {return DbSet.DeleteMany(predicate); }#endregion#region Otherpublic long Count(Expression<func>> predicate) {return DbSet.Count(predicate); }public Task<long> CountAsync(Expression<func>> predicate, CancellationToken cancellationToken = new CancellationToken()) {return DbSet.CountAsync(predicate, null, cancellationToken); }public bool Exists(Expression<func>> predicate) {return Get(predicate).Any(); }#endregion#region Pagepublic IEnumerable<t> Paged(Expression<func>> predicate, Expression<func>> sortBy,int pageSize, int pageIndex = 1) {var sort = Builders<t>.Sort.Descending(sortBy);return DbSet.Find(predicate).Sort(sort).Skip(pageSize * pageIndex - 1).Limit(pageSize).ToList(); }public Task<list>> PagedAsync(Expression<func>> predicate, Expression<func>> sortBy,int pageSize, int pageIndex = 1, CancellationToken cancellationToken = new CancellationToken()) {return Task.Run(() =>{var sort = Builders<t>.Sort.Descending(sortBy);return DbSet.Find(predicate).Sort(sort).Skip(pageSize * pageIndex - 1).Limit(pageSize).ToList(); }, cancellationToken); }#endregion#region Helper/// <summary>/// 获取类型的所有属性信息/// </summary>/// <typeparam></typeparam>/// <typeparam></typeparam>/// <param>/// <returns></returns>private PropertyInfo[] GetPropertyInfos<tproperty>(Expression<func>> select) {var body = select.Body;switch (body.NodeType) {case ExpressionType.Parameter:var parameterExpression = body as ParameterExpression;if (parameterExpression != null) return parameterExpression.Type.GetProperties();break;case ExpressionType.New:var newExpression = body as NewExpression;if (newExpression != null)return newExpression.Members.Select(m => m as PropertyInfo).ToArray();break; }return null; }#endregion}</func></tproperty></t></func></func></list></t></func></func></t></func></func></long></func></func></func></deleteresult></t></t></t></updateresult></t></t></t></t></func></ienumerable></func></t></t></t></t></string></t></t>Code anzeigen


public class MongoDBSetting {public string DataBase { get; set; }public string UserName { get; set; }public string Password { get; set; }public List<mongoservers> Services { get; set; } }public class MongoServers {public string Host { get; set; }public int Port { get; set; } = 27017; }</mongoservers>Ansichtscode


public class LogsContext {private readonly IMongoDatabase _db;public LogsContext(IOptions<mongodbsetting> options) {var permissionSystem =MongoCredential.CreateCredential(options.Value.DataBase, options.Value.UserName, options.Value.Password);var services = new List<mongoserveraddress>();foreach (var item in options.Value.Services) { services.Add(new MongoServerAddress(item.Host, item.Port)); }var settings = new MongoClientSettings { Credentials = new[] {permissionSystem}, Servers = services };var _mongoClient = new MongoClient(settings); _db = _mongoClient.GetDatabase(options.Value.DataBase); }public IMongoCollection<errorlogs> ErrorLog => _db.GetCollection<errorlogs>("Error");public IMongoCollection<errorlogs> WarningLog => _db.GetCollection<errorlogs>("Warning"); }</errorlogs></errorlogs></errorlogs></errorlogs></mongoserveraddress></mongodbsetting>


public static IServiceCollection UserMongoLog(this IServiceCollection services, IConfigurationSection configurationSection) { services.Configure<mongodbsetting>(configurationSection); services.AddSingleton<logscontext>();return services; }</logscontext></mongodbsetting>


public interface IErrorLogService : IRepository<errorlog>{ }public class ErrorLogService : MongoRepository<errorlog>, IErrorLogService {public ErrorLogService(LogsContext dbContext) : base(dbContext.ErrorLog) { } }</errorlog></errorlog>


"Mongo.Log": {"DataBase": "PermissionSystem","UserName": "sa","Password": "shtx@123","Services": [ {"Host": "192.168.1.6","Port": "27017" } ] }
刚学洗使用MongoDB,才疏学浅,请大神多多指教
Das obige ist der detaillierte Inhalt vonBeispielcode für Asp.Net Core MongoDB. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

C# .NET ist eine leistungsstarke Entwicklungsplattform, die die Vorteile des C# Language- und .NET -Frameworks kombiniert. 1) Es wird häufig in Unternehmensanwendungen, Webentwicklung, Spielentwicklung und mobiler Anwendungsentwicklung verwendet. 2) C# Code wird in eine Zwischensprache zusammengestellt und von der .NET Runtime -Umgebung ausgeführt, wobei die Müllsammlung, Typsicherheit und LINQ -Abfragen unterstützt werden. 3) Beispiele für die Nutzung umfassen grundlegende Konsolenausgabe und erweiterte LINQ -Abfragen. 4) Häufige Fehler wie leere Referenzen und Typ -Konvertierungsfehler können durch Debugger und Protokollierung gelöst werden. 5) Vorschläge zur Leistungsoptimierung umfassen asynchrone Programmierungen und Optimierung von LINQ -Abfragen. 6) Trotz des Wettbewerbs behält C#.NET seine wichtige Position durch kontinuierliche Innovation bei.

Die zukünftigen Trends von C#.NET konzentrieren sich hauptsächlich auf drei Aspekte: Cloud Computing, Microservices, KI und maschinelle Lernintegration und plattformübergreifende Entwicklung. 1) Cloud Computing und Microservices: C#.NET optimiert die Cloud -Umgebungsleistung über die Azure -Plattform und unterstützt die Konstruktion einer effizienten Microservice -Architektur. 2) Integration von KI und maschinellem Lernen: Mit Hilfe der ML.NET -Bibliothek können C# -Entwickler maschinelle Lernmodelle in ihre Anwendungen einbetten, um die Entwicklung intelligenter Anwendungen zu fördern. 3) plattformübergreifende Entwicklung: Durch .NetCore und .NET5 können C# -Anwendungen unter Windows, Linux und MacOS ausgeführt werden, wodurch der Bereitstellungsbereich erweitert wird.

Zu den neuesten Entwicklungen und Best Practices in der C#.NET-Entwicklung gehören: 1. Asynchrone Programmierung verbessert die Reaktionsfähigkeit der Anwendungen und vereinfacht nicht blockierende Code mit Async und wartet Keywords. 2. LINQ liefert leistungsstarke Abfragefunktionen, die Daten effizient durch verzögerte Ausführung und Ausdrucksbäume manipulieren. 3. Die Vorschläge zur Leistungsoptimierung umfassen die Verwendung der asynchronen Programmierung, die Optimierung von LINQ -Abfragen, die rationale Verwaltung des Speichers, die Verbesserung der Code -Lesbarkeit und -wartung und das Schreiben von Unit -Tests.

Wie erstelle ich Anwendungen mit .NET? Erstellen Anwendungen mit .NET können in den folgenden Schritten erreicht werden: 1) Verstehen Sie die Grundlagen von .NET, einschließlich C# Sprache und plattformübergreifender Entwicklungsunterstützung; 2) Kernkonzepte wie Komponenten und Arbeitsprinzipien des .NET -Ökosystems lernen; 3) Master Basic und Advanced Nutzung, von einfachen Konsolenanwendungen bis hin zu komplexen Webapis- und Datenbankvorgängen; 4) Mit gemeinsamen Fehlern und Debugging -Techniken wie Konfigurations- und Datenbankverbindungsproblemen vertraut sein; 5) Optimierung der Anwendungsleistung und Best Practices wie asynchrone Programmieren und Zwischenspeichern.

C# wird häufig in Anwendungen auf Unternehmensebene, Spieleentwicklung, mobilen Anwendungen und Webentwicklung verwendet. 1) In Anwendungen auf Unternehmensebene wird C# häufig für ASP.NetCore zur Entwicklung von WebAPI verwendet. 2) In der Spielentwicklung wird C# mit der Unity Engine kombiniert, um die Rollenkontrolle und andere Funktionen zu realisieren. 3) C# unterstützt Polymorphismus und asynchrone Programmierung, um die Code -Flexibilität und die Anwendungsleistung zu verbessern.

C# und .NET eignen sich für Web-, Desktop- und Mobile -Entwicklung. 1) In der Webentwicklung unterstützt ASP.NetCore die plattformübergreifende Entwicklung. 2) Die Desktop -Entwicklung verwendet WPF und Winforms, die für unterschiedliche Anforderungen geeignet sind. 3) Mobile Entwicklung realisiert plattformübergreifende Anwendungen über Xamarin.

Das C#.NET -Ökosystem bietet reichhaltige Frameworks und Bibliotheken, mit denen Entwickler Anwendungen effizient erstellen können. 1.asp.netcore wird verwendet, um Hochleistungs-Webanwendungen zu erstellen. Durch das Verständnis der Nutzung und Best Practices dieser Tools können Entwickler die Qualität und Leistung ihrer Anwendungen verbessern.

Wie bereitete ich eine C# .NET -App für Azure oder AWS bereit? Die Antwort ist, AzureAppservice und Awselasticbeanstalk zu verwenden. 1. Automatisieren Sie bei Azure die Bereitstellung mit AzureAppservice und AzurePipelines. 2. Verwenden Sie bei AWS Amazon ElasticbeanSpalk und AWSLambda, um Bereitstellungen und serverlosen Computer zu implementieren.


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Herunterladen der Mac-Version des Atom-Editors
Der beliebteste Open-Source-Editor

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Sicherer Prüfungsbrowser
Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.

SAP NetWeaver Server-Adapter für Eclipse
Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.
