我在WCF服务中有这个功能:
public IEnumerable<Product> ListProducts()
{
return dal.RunDapper<Product>("listarProdutos");
}
它将使用Dapper执行proc并使用此类映射数据:
[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; }
}
在我的本地模特中:
public IEnumerable<Product> ListarProdutos()
{
var retorno = WCF.ListProducts();
return retorno.Cast<Product>();
}
我的本地Product类具有相同的属性:
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; }
}
这是我的控制者:
public ActionResult Index()
{
ProductDB produtos = new ProductDB();
var model = produtos.ListProducts();
return View(model);
}
我的视图模型:
<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>
我收到此错误:
无法将
ModeloTemplate.NorthWindWCF.Product
类型的对象转换为 输入ModeloTemplate.Models.Product
。
答案 0 :(得分:1)
WCF服务引用为Product
创建了ModeloTemplate.NorthWindWCF.Product
的类型。您将类型(如您所说,本地)定义为ModeloTemplate.Models.Product
。这是两种不同的,不相关的类型,不能自动来回转换。查看AutoMapper。
答案 1 :(得分:0)
如果要使用本地对象而不是数据合同对象,则本地模型缺少属性:
或者在您的应用程序中使用数据协定对象。
希望这有帮助。