Конкретное условие запроса 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 : "[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 ;
}
}
но в документе говорится, что обычный 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" : "[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();
}
}
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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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