Convertir IEnumerable frow WCF à un autre IEnumerable local est-ce possible? .net c# casting dapper model-view-controller

Question

J'ai cette fonction dans un service WCF:

public IEnumerable<Product> ListProducts()
{
    return dal.RunDapper<Product>("listarProdutos");
}

Il exécutera un proc avec Dapper et mappera les données avec cette classe:

[DataContract]
public class Product
{
    [DataMember]
    public int PRODUCTID { get; set; }
    [DataMember]
    public string PRODUCTNAME { get; set; }
    [DataMember]
    public string COMPANYNAME { get; set; }
    [DataMember]
    public string CATEGORYNAME { get; set; }
    [DataMember]
    public decimal UNITPRICE { get; set; }
    [DataMember]
    public int UNITINSTOCK { get; set; }
}

Dans mon modèle local:

public IEnumerable<Product> ListarProdutos()
{
    var retorno = WCF.ListProducts();
    return retorno.Cast<Product>();
}

et ma classe de produit locale a les mêmes propriétés:

public class Product
{
    public int PRODUCTID { get; set; }
    public string PRODUCTNAME { get; set; }
    public string COMPANYNAME { get; set; }
    public string CATEGORYNAME { get; set; }
    public decimal UNITPRICE { get; set; }
    public int UNITINSTOCK { get; set; }
}

Ceci est mon contrôleur:

public ActionResult Index()
{
    ProductDB produtos = new ProductDB();
    var model = produtos.ListProducts();

    return View(model);
}

Modèle My View:

<tr>
    <td>@Html.DisplayNameFor(model => model.PRODUCTNAME)</td>
    <td class="hidden-xs">@Html.DisplayNameFor(model => model.COMPANYNAME)</td>
    <td>@Html.DisplayNameFor(model => model.CATEGORYNAME)</td>
    <td class="hidden-xs">@Html.DisplayNameFor(model => model.UNITPRICE)</td>
    <td>@Html.DisplayNameFor(model => model.UNITINSTOCK)</td>
</tr>

Je reçois cette erreur:

Impossible de ModeloTemplate.NorthWindWCF.Product objet de type ModeloTemplate.NorthWindWCF.Product pour taper ModeloTemplate.Models.Product .

Réponse populaire

La référence de service WCF a créé un type pour Product tant que ModeloTemplate.NorthWindWCF.Product . Vous avez défini un type (comme vous l'avez dit localement) en tant que ModeloTemplate.Models.Product . Ce sont deux types différents et indépendants et ne peuvent pas être renvoyés automatiquement. Découvrez AutoMapper .



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi