Я создал проект ASP.NET Web API (с использованием .NET Framework 4.6.1) в Visual Studio Community Edition 2017, который использует MongoDb Atlas через драйвер MongoDB .NET. В проекте «Пациенты» хранится несколько разных атрибутов.
Я успешно реализовал метод Get (), чтобы вернуть «Patient». Теперь я хочу реализовать метод GetMedications (), чтобы возвращать только лекарства определенного «пациента». Ниже приведены подходящие методы в моем файле PatientController:
public async Task<Patient> Get(string id)
{
try
{
ObjectId internalId = GetInternalId(id);
return await _patients.Find(p => p.Id == id || p.InternalId == internalId).FirstOrDefaultAsync();
}
catch (Exception ex)
{
throw ex;
}
}
[Route("api/patients/{id}/medications")]
public async Task<Medication> GetMedications(string id)
{
try
{
ObjectId internalId = GetInternalId(id);
var patient = await _patients.Find(p => p.Id == id || p.InternalId == internalId).FirstOrDefaultAsync();
return patient.Medications;
}
catch (Exception ex)
{
throw ex;
}
}
private ObjectId GetInternalId(string id)
{
ObjectId internalId;
if (!ObjectId.TryParse(id, out internalId))
internalId = ObjectId.Empty;
return internalId;
}
Visual studio отображает эту ошибку для return patient.Medications
:
Cannot implicitly convert type 'Systems.Collections.Generic.ICollection<WebAPIDemo.Models.Medication>' to 'WebAPIDemo.Models.Medication'
Вот мой класс пациента (и другие соответствующие классы):
public class Patient
{
[BsonId]
public ObjectId InternalId { get; set; }
public string Id { get; set; }
public string Name { get; set; }
public ICollection<Ailment> Ailments { get; set; }
public ICollection<Medication> Medications { get; set; }
}
public class Medication
{
public string Name { get; set; }
public int Doses { get; set; }
}
public class Ailment
{
public string Name { get; set; }
}
Как правильно написать метод GetMedications ()?