estoy haciendo una aplicación web en c# en la que consulto los datos que hay en una CosmoDB que tengo en Azure. Esta cosmoDB tiene guardados Documents que son Jsons de unas estructuras de datos que tengo definidas como modelos en mi aplicación web. El problema es que a la hora de hacer la consulta al tener diferentes tipos de estructuras en la base de datos debo hacerlo como tipo object para posteriormente convertirlo en un tipo especifico y mostrarlo por pantalla en un codigo html. En realidad el codigo que tengo es un codigo que te proporciona un tutorial de Azure modificado según mi aplicación.
El codigo es el siguiente:
namespace todo
{
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;
using System.Collections;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
DocumentDBRepository<Object>.Initialize();
}
}
}
Despues el Home controller hace lo siguiente:
[ActionName("ECCE")]
public async Task<ActionResult> ECCEAsync(string id)
{
var items = await DocumentDBRepository<Object>.GetItemsAsync(id);
return View((ECCE_SupportData)items);
}
Donde la clase DocumentDBRepository hace lo siguiente:
public static async Task<IEnumerable<T>> GetItemsAsync(string collectionId)
{
List<T> results = new List<T>();
try
{
IDocumentQuery<T> query = client.CreateDocumentQuery<T>(
UriFactory.CreateDocumentCollectionUri(DatabaseId, collectionId),
new FeedOptions { MaxItemCount = -1, EnableCrossPartitionQuery = true })
.AsDocumentQuery();
while (query.HasMoreResults)
{
results.AddRange(await query.ExecuteNextAsync<T>());
}
}
catch (Exception)
{
return results;
}
return results;
}
Para posteriormente pasarle el enumerable de objetos al html para verlos en pantalla:
<script type="text/javascript" language="javascript" src="../../Scripts/TableFilter/tablefilter.js"></script>
@model IEnumerable<todo.Models.ECCE.ECCE_SupportData>
@{
ViewBag.Title = "Data";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>ECCE Data</h2>
@if (Model.Count() != 0)
{
<table class="table" id="ECCETable">
<tr>
<th>
@Html.DisplayNameFor(model => model.ECCE_CnfStatus)
</th>
<th>
@Html.DisplayNameFor(model => model.ECCE_ComsStatus.ComStatus)
</th>
<th>
@Html.DisplayNameFor(model => model.ECCE_ComsStatus.UltimoError)
</th>
<th>
@Html.DisplayNameFor(model => model.ECCE_Status.AppVersion.IdApp)
</th>
<th>
@Html.DisplayNameFor(model => model.ECCE_Status.AppVersion.ReqVersion)
</th>
<th>
@Html.DisplayNameFor(model => model.ECCE_Status.AppVersion.SwVersion)
</th>
<th>
@Html.DisplayNameFor(model => model.ECCE_Status.AppStatus)
</th>
<th>
@Html.DisplayNameFor(model => model.ECCE_UvStatus.NumUVs)
</th>
</table>
El problema es que al intentar convertir el Objeto a mi estructura de datos ECCE_SuportData me da un error No se puede convertir un objeto de tipo 'System.Collections.Generic.List`1[System.Object]' al tipo 'todo.Models.ECCE.ECCE_SupportData'
Alguien sabe como puedo convertir el objeto a esta estructura de datos? Gracias de antemano.
Aucun commentaire:
Enregistrer un commentaire