Обновите запрос в mongoDB с помощью c # - PullRequest
0 голосов
/ 10 июля 2019

Ошибка компилятора CS1061 в переменной x, я хочу обновить запрос в mongodb, но проблема вызвала ошибку для x.

public async Task<string> Update(string id, TEntity user)
    {
        await collection.ReplaceOneAsync(x => x.id == id, user);
        return "";
    }

1 Ответ

1 голос
/ 10 июля 2019

В этом коде: ReplaceOneAsync(x => x.id == id, user) x имеет тип TEntity.

Ошибка говорит о том, что с точки зрения компилятора TEntity не содержит свойства id.

Один из способов ее решения - определить абстракцию, от которой каждый TEntity должен наследовать:

public interface IEntity
{
   string id { get; set; }
}

Затем в классе репозитория (в соответствии с опубликованным вами методом я предполагаю, что это универсальный класс репозитория TEntity), добавьте общее ограничение на TEntity следующим образом:

public class MyRepository<TEntity> where TEntity : IEntity
{
    // collection should be IMongoCollection<TEntity> 
    private IMongoCollection<TEntity> collection; // initialized elsewhere

    public async Task<string> Update(string id, TEntity user)
    {
        await collection.ReplaceOneAsync(x => x.id == id, user);
        return "";
    }

    // ...other members...
}

Поскольку мы включили общее ограничение where TEntity : IEntity, компилятор теперь знает, что каждый TEntity имеет свойство string id.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...