В этом коде: 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
.