Когда я запрашиваю данные с определенным условием, это не работает
Код: Выделить всё
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 : "[email protected]" }
//null
var test3 = await _memberInfoContext.MemberInfo.Where(x => x.MemberEmail == "[email protected]").AsNoTracking().ToListAsync();
//null
var test4 = await _memberInfoContext.MemberInfo.Where(x => x.MemberEmail.Equals("[email protected]")).AsNoTracking().ToListAsync();
//null
var test5 = await _memberInfoContext.MemberInfo.AsNoTracking().FirstOrDefaultAsync(x => x.MemberEmail == "[email protected]");
return test2 ;
}
}
а также распечатать журнал в моей консоли
Код: Выделить всё
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" : "[email protected]" } }, { "$limit" : NumberLong(1) }])
info: Microsoft.EntityFrameworkCore.Database.Command[35000]
Executed MQL query
my_member.member_info.aggregate([{ "$match" : { "MemberEmail" : "[email protected]" } }, { "$limit" : NumberLong(1) }])
info: Microsoft.EntityFrameworkCore.Database.Command[35000]
Executed MQL query
my_member.member_info.aggregate([{ "$match" : { "MemberEmail" : "[email protected]" } }, { "$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();
}
}
Код: Выделить всё
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();
});
Версия пакета 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