O DocumentDB mostra todos os documentos do tipo de entidade específico
Eu tenho um genéricoIDocumentDbRepository
repositório para fornecer operações básicas de CRUD com o DocumentDB e repositórios específicos para operações adicionais com entidades específicas, que herdam ou implementam essa interface e classe.
public interface IDocumentDbRepository<T> where T : class
{
//IEnumerable<T> GetItems();
Task<IEnumerable<T>> GetItemsAsync();
Task<T> GetItemAsync(T id);
Task<T> AddDocumentAsync(T item);
Task<T> UpdateDocumentAsync(T id, T item);
Task DeletedocumentAsync(T id);
}
public class DocumentDbRepository<T> : IDocumentDbRepository<T> where T : class
{
private readonly string AuthKey;
private readonly string EndpointUri;
private readonly string DatabaseId;
private readonly string CollectionId;
private static DocumentClient client;
public DocumentDbRepository(IOptions<DocumentDbSettings> DocumentDbConfig)
{
this.DatabaseId = DocumentDbConfig.Value.DatabaseName;
this.CollectionId = DocumentDbConfig.Value.CollectionName;
this.AuthKey = DocumentDbConfig.Value.AuthKey;
this.EndpointUri = DocumentDbConfig.Value.EndpointUri;
client = new DocumentClient(new Uri(EndpointUri), AuthKey);
}
public async Task<IEnumerable<T>> GetItemsAsync()
{
IDocumentQuery<T> query = client.CreateDocumentQuery<T>(
UriFactory.CreateDocumentCollectionUri(DatabaseId, CollectionId))
.AsDocumentQuery();
List<T> results = new List<T>();
while (query.HasMoreResults)
{
results.AddRange(await query.ExecuteNextAsync<T>());
}
return results;
}
// public IEnumerable<T> GetItems()
// {
// var results = client.CreateDocumentQuery<T>//(UriFactory.CreateDocumentCollectionUri(DatabaseId, CollectionId)).ToList();
// return results;
// }
//methods
No meu específicoEmployee
repositório pretendo retornar apenas documentos do tipoEmployee
public interface IEmployeeRepository : IDocumentDbRepository<Employee>
{
List<Employee> GetAllEmployees();
}
public class EmployeeRepository : DocumentDbRepository<Employee>, IEmployeeRepository
{
public EmployeeRepository(IOptions<DocumentDbSettings> DocumentDbConfig) : base(DocumentDbConfig)
{
}
public List<Employee> GetAllEmployees()
{
return GetItems().Where(x => x.GetType() == typeof(Employee)).ToList();
}
}
Eu chamoGetAllEmployees
método no meu controlador para listar apenas documentos do tipoEmployee
no meu modo de exibição, mas ele não funciona e todos os documentos com qualquer tipo de entidade são listados. O que estou fazendo errado ?
public IActionResult Index()
{
return View(_employeeRepository.GetAllEmployees());
}