Репозиторий Общий репозиторий с единицей работы для ядра C# .net с MongoDB ⇐ C#
Репозиторий Общий репозиторий с единицей работы для ядра C# .net с MongoDB
Я новичок в ядре .NET и проектирую многоуровневую архитектуру основного приложения Asp.net. Мы используем общий репозиторий с шаблоном репозитория Unit of Work. Завершен общий метод репозитория, нужно иметь некоторое представление о единице работы с коллекцией.
Общий репозиторий
общедоступный интерфейс IMongoRepository где TDocument: IAudiableEntity { void InsertOne (документ TDocument); Task InsertOneAsync (документ TDocument); void InsertMany (документы ICollection); Задача InsertManyAsync (документы ICollection); void replaceOne (документ TDocument); Задача replaceOneAsync (документ TDocument); void DeleteOne(Expression filterExpression); Задача DeleteOneAsync(Expression filterExpression); void DeleteById (идентификатор строки); Задача DeleteByIdAsync (идентификатор строки); void DeleteMany(Expression filterExpression); Задача DeleteManyAsync(Expression filterExpression); } общедоступный класс MongoRepository: IMongoRepository где TDocument: IAudiableEntity { частный только для чтения IMongoCollection _collection; общедоступный MongoRepository (настройки IMongoDbSettings) { база данных var = новый MongoClient(settings.ConnectionString).GetDatabase(settings.DatabaseName); _collection = data.GetCollection(GetCollectionName(typeof(TDocument))); } частная защищенная строка GetCollectionName (тип documentType) { return ((BsonCollectionAttribute)documentType.GetCustomAttributes( тип(BsonCollectionAttribute), истинный) .FirstOrDefault())?.CollectionName; } публичная виртуальная пустота InsertOne (документ TDocument) { _collection.InsertOne(документ); } общедоступная виртуальная асинхронная задача InsertOneAsync (документ TDocument) { ждут _collection.InsertOneAsync(документ); возвратный документ; } public void InsertMany (документы ICollection) { _collection.InsertMany(документы); } общедоступная виртуальная асинхронная задача InsertManyAsync (документы ICollection) { ждут _collection.InsertManyAsync(документы); } общественная недействительность replaceOne (документ TDocument) { var filter = Builders.Filter.Eq(doc => doc.Id, document.Id); if (документ представляет собой слайд Слайдов) { слайд.IsDirty = правда; } _collection.FindOneAndReplace(фильтр, документ); } public void replaceWODirtyOne (документ TDocument) { var filter = Builders.Filter.Eq(doc => doc.Id, document.Id); _collection.FindOneAndReplace(фильтр, документ); } общедоступная виртуальная асинхронная задача replaceOneAsync (документ TDocument) { var filter = Builders.Filter.Eq(doc => doc.Id, document.Id); if (документ представляет собой слайд Слайдов) { слайд.IsDirty = правда; } ждут _collection.FindOneAndReplaceAsync(фильтр, документ); } общедоступная виртуальная асинхронная задача replaceWODirtyOneAsync (документ TDocument) { var filter = Builders.Filter.Eq(doc => doc.Id, document.Id); ждут _collection.FindOneAndReplaceAsync(фильтр, документ); } public void DeleteOne(Expression filterExpression) { _collection.FindOneAndDelete(filterExpression); } общедоступная задача DeleteOneAsync (Expression filterExpression) { return Task.Run(() => _collection.FindOneAndDeleteAsync(filterExpression)); } общественная пустота DeleteById (идентификатор строки) { вар objectId = новый ObjectId (id); var filter = Builders.Filter.Eq(doc => doc.Id, objectId); _collection.FindOneAndDelete(фильтр); } общедоступная задача DeleteByIdAsync (идентификатор строки) { вернуть Task.Run(() => { вар objectId = новый ObjectId (id); var filter = Builders.Filter.Eq(doc => doc.Id, objectId); _collection.FindOneAndDeleteAsync(фильтр); }); } public void DeleteMany(Expression filterExpression) { _collection.DeleteMany(filterExpression); } общедоступная задача DeleteManyAsync (Expression filterExpression) { вернуть Task.Run(() => _collection.DeleteManyAsync(filterExpression)); } } Как можно выполнить работу здесь, дайте мне знать о возможностях.
Я новичок в ядре .NET и проектирую многоуровневую архитектуру основного приложения Asp.net. Мы используем общий репозиторий с шаблоном репозитория Unit of Work. Завершен общий метод репозитория, нужно иметь некоторое представление о единице работы с коллекцией.
Общий репозиторий
общедоступный интерфейс IMongoRepository где TDocument: IAudiableEntity { void InsertOne (документ TDocument); Task InsertOneAsync (документ TDocument); void InsertMany (документы ICollection); Задача InsertManyAsync (документы ICollection); void replaceOne (документ TDocument); Задача replaceOneAsync (документ TDocument); void DeleteOne(Expression filterExpression); Задача DeleteOneAsync(Expression filterExpression); void DeleteById (идентификатор строки); Задача DeleteByIdAsync (идентификатор строки); void DeleteMany(Expression filterExpression); Задача DeleteManyAsync(Expression filterExpression); } общедоступный класс MongoRepository: IMongoRepository где TDocument: IAudiableEntity { частный только для чтения IMongoCollection _collection; общедоступный MongoRepository (настройки IMongoDbSettings) { база данных var = новый MongoClient(settings.ConnectionString).GetDatabase(settings.DatabaseName); _collection = data.GetCollection(GetCollectionName(typeof(TDocument))); } частная защищенная строка GetCollectionName (тип documentType) { return ((BsonCollectionAttribute)documentType.GetCustomAttributes( тип(BsonCollectionAttribute), истинный) .FirstOrDefault())?.CollectionName; } публичная виртуальная пустота InsertOne (документ TDocument) { _collection.InsertOne(документ); } общедоступная виртуальная асинхронная задача InsertOneAsync (документ TDocument) { ждут _collection.InsertOneAsync(документ); возвратный документ; } public void InsertMany (документы ICollection) { _collection.InsertMany(документы); } общедоступная виртуальная асинхронная задача InsertManyAsync (документы ICollection) { ждут _collection.InsertManyAsync(документы); } общественная недействительность replaceOne (документ TDocument) { var filter = Builders.Filter.Eq(doc => doc.Id, document.Id); if (документ представляет собой слайд Слайдов) { слайд.IsDirty = правда; } _collection.FindOneAndReplace(фильтр, документ); } public void replaceWODirtyOne (документ TDocument) { var filter = Builders.Filter.Eq(doc => doc.Id, document.Id); _collection.FindOneAndReplace(фильтр, документ); } общедоступная виртуальная асинхронная задача replaceOneAsync (документ TDocument) { var filter = Builders.Filter.Eq(doc => doc.Id, document.Id); if (документ представляет собой слайд Слайдов) { слайд.IsDirty = правда; } ждут _collection.FindOneAndReplaceAsync(фильтр, документ); } общедоступная виртуальная асинхронная задача replaceWODirtyOneAsync (документ TDocument) { var filter = Builders.Filter.Eq(doc => doc.Id, document.Id); ждут _collection.FindOneAndReplaceAsync(фильтр, документ); } public void DeleteOne(Expression filterExpression) { _collection.FindOneAndDelete(filterExpression); } общедоступная задача DeleteOneAsync (Expression filterExpression) { return Task.Run(() => _collection.FindOneAndDeleteAsync(filterExpression)); } общественная пустота DeleteById (идентификатор строки) { вар objectId = новый ObjectId (id); var filter = Builders.Filter.Eq(doc => doc.Id, objectId); _collection.FindOneAndDelete(фильтр); } общедоступная задача DeleteByIdAsync (идентификатор строки) { вернуть Task.Run(() => { вар objectId = новый ObjectId (id); var filter = Builders.Filter.Eq(doc => doc.Id, objectId); _collection.FindOneAndDeleteAsync(фильтр); }); } public void DeleteMany(Expression filterExpression) { _collection.DeleteMany(filterExpression); } общедоступная задача DeleteManyAsync (Expression filterExpression) { вернуть Task.Run(() => _collection.DeleteManyAsync(filterExpression)); } } Как можно выполнить работу здесь, дайте мне знать о возможностях.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Регулярное выражение – какой шаблон для цифры с плавающей запятой рядом с единицей измерения
Anonymous » » в форуме Php - 0 Ответы
- 11 Просмотры
-
Последнее сообщение Anonymous
-