2.7Kпросмотров
11.6%от подписчиков
24 марта 2026 г.
provocationScore: 2.9K
👨‍💻 Хватит мучить MongoDB через EF Core Вы выбрали MongoDB ради гибкости. А потом два часа потратили на то, чтобы EF Core позволил сделать элементарный фильтр. Поздравляем, вы сами себе враг. EF Core для MongoDB это иллюзия комфорта. Знакомый синтаксис, но в обмен на всё, ради чего вообще брали Mongo: агрегационные пайплайны, геозапросы, полнотекстовый поиск. Провайдер этого просто не умеет. Правильный путь — это MongoDB.Driver напрямую. Ставите пакет: dotnet add package MongoDB.Driver Делаете кастомный атрибут, чтобы сущность сама знала свою коллекцию: [CollectionName("orders")] public class Order { [BsonId] [BsonRepresentation(BsonType.ObjectId)] public string Id { get; set; } public string CustomerName { get; set; } } Generic-репозиторий читает атрибут сам и никаких магических строк в Program.cs: public class MongoRepository<T> : IMongoRepository<T> { private readonly IMongoCollection<T> _collection; public MongoRepository(IMongoDatabase db) { var name = typeof(T) .GetCustomAttribute<CollectionNameAttribute>()?.Name ?? typeof(T).Name; _collection = db.GetCollection<T>(name); } } Регистрируете один раз через и больше никогда не трогаете Program.cs при добавлении новых коллекций: services.AddScoped(typeof(IMongoRepository<>), typeof(MongoRepository<>)); Новая коллекция? Просто новый класс с [CollectionName]. А для сложных запросов Builders<T>: var filter = Builders<Order>.Filter.Eq(o => o.Status, "pending"); var sort = Builders<Order>.Sort.Descending(o => o.CreatedAt); var results = await _collection.Find(filter).Sort(sort).ToListAsync(); 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека шарписта #sharp_view
2.7K
просмотров
1725
символов
Нет
эмодзи
Нет
медиа

Другие посты @csharpproglib

Все посты канала →