Конкретное условие запроса MongoDB.EntityFrameworkCore не работаетC#

Место общения программистов C#
Anonymous
Конкретное условие запроса MongoDB.EntityFrameworkCore не работает

Сообщение Anonymous »

У меня возникла проблема при разработке веб-приложения dotnet с помощью MongoDB.EntityFrameworkCore.
Когда я запрашиваю данные с определенным условием, это не работает

Код: Выделить всё

using Microsoft.EntityFrameworkCore;
using MongoDB.Bson;
using Application.Domain.Aggregate;
using Application.Domain.Repository;

namespace Application.Infrastructure.Core.Data.Impl;

public class MemberInfoMongoRepository : IMemberInfoMongoRepository
{

private readonly MemberInfoContext _memberInfoContext;

public MemberInfoMongoRepository(MemberInfoContext memberInfoContext)
{
_memberInfoContext = memberInfoContext;
}

public async Task GetMemberInfoAsync()
{
//data load into _memberInfoContext.MemberInfo for sure

//get 10 row correct data
var test1 = await _memberInfoContext.MemberInfo.OrderByDescending(c => c.Id).Take(10).AsNoTracking().ToListAsync();

//get correct data
var test2 = await _memberInfoContext.MemberInfo.FirstOrDefaultAsync();

//but in my Mongodb Compass can find this data { MemberEmail : "tUryw34u7r8ko@gmail.com" }
//null
var test3 = await _memberInfoContext.MemberInfo.Where(x => x.MemberEmail == "tUryw34u7r8ko@gmail.com").AsNoTracking().ToListAsync();

//null
var test4 = await _memberInfoContext.MemberInfo.Where(x => x.MemberEmail.Equals("tUryw34u7r8ko@gmail.com")).AsNoTracking().ToListAsync();

//null
var test5 = await _memberInfoContext.MemberInfo.AsNoTracking().FirstOrDefaultAsync(x => x.MemberEmail == "tUryw34u7r8ko@gmail.com");

return test2 ;
}
}
но в документе говорится, что обычный API Efcore работает, но я пробовал снова и снова, все еще не знаю, в чем дело
а также распечатать журнал в моей консоли

Код: Выделить всё

info: Microsoft.EntityFrameworkCore.Database.Command[35000]
Executed MQL query
my_member.member_info.aggregate([{ "$sort" : { "_id" : -1 } }, { "$limit" : NumberLong(10) }])
info: Microsoft.EntityFrameworkCore.Database.Command[35000]
Executed MQL query
my_member.member_info.aggregate([{ "$limit" : NumberLong(1) }])
info: Microsoft.EntityFrameworkCore.Database.Command[35000]
Executed MQL query
my_member.member_info.aggregate([{ "$match" : { "MemberEmail" : "tUryw34u7r8ko@gmail.com" } }, { "$limit" : NumberLong(1) }])
info: Microsoft.EntityFrameworkCore.Database.Command[35000]
Executed MQL query
my_member.member_info.aggregate([{ "$match" : { "MemberEmail" : "tUryw34u7r8ko@gmail.com" } }, { "$limit" : NumberLong(1) }])
info: Microsoft.EntityFrameworkCore.Database.Command[35000]
Executed MQL query
my_member.member_info.aggregate([{ "$match" : { "MemberEmail" : "tUryw34u7r8ko@gmail.com" } }, { "$limit" : NumberLong(1) }])
и некоторые другие настройки

Код: Выделить всё

using MongoDB.EntityFrameworkCore;
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;

[Collection("member_info")]
public class MemberInfo
{
public ObjectId Id { get; set; }

public long MemberId { get; set; }

public string MemberEmail{ get; set; }
}

Код: Выделить всё

using Microsoft.EntityFrameworkCore;
using Application.Domain.Aggregate;

namespace Application.Infrastructure.Core.Data;

public class MemberInfoContext : DbContext
{
public DbSet MemberInfo { get; set; }

public MemberInfoContext(DbContextOptions options)
: base(options)
{
}

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);

modelBuilder.Entity();
}
}
Program.cs

Код: Выделить всё

var mongoDBSettings = config.GetSection("MongoDBSettings").Get();
services.Configure(config.GetSection("MongoDBSettings"));

services.AddDbContext(options =>
{
options.UseMongoDB(mongoDBSettings.ConnectionString, mongoDBSettings.Database)
.UseLoggerFactory(LoggerFactory.Create(builder => { builder.AddConsole();  }))
.EnableSensitiveDataLogging();
});
Версия проекта: 8.0
Версия пакета Nuget MongoDB.EntityFrameworkCore: 8.0.3,8.1.0,8.1.1
Версия сервера Mongodb: 7.0.5
p>
Я попробовал
Добавить атрибут [BsonElement] для моего «класса-члена»
modelBuilder.Entity().ToCollection("member_info ");
и проверьте работу соединения с БД

Подробнее здесь: https://stackoverflow.com/questions/790 ... n-not-work

Вернуться в «C#»