我有一个存储过程,它返回字符串值。 现在我必须将此存储过程从linq调用到实体查询,并将其结果存储到 我的复杂类型的字符串属性。 但我得到以下错误。 “无法将类型objectresult隐式转换为字符串”。 我的查询如下:
using (NeoSoftWindowApp_dbEntities objDatabase = new NeoSoftWindowApp_dbEntities())
{
ObjectParameter address = new ObjectParameter("Address", typeof(string));
return (from tbl in objDatabase.COMPs
select new CompanyReport_ComplexType
{
Address=objDatabase.ReturnAddressDetailForCompany(tbl.COMP_ADD1,tbl.COMP_ADD2,
tbl.COMP_ADD3, address),
City = tbl.COMP_CITY,
CompanyCode = tbl.COMP_NO,
CompanyName = tbl.COMP_NAME
}).ToList();
}
在上面的代码中,ReturnAddressDetailForCompany()是我的存储过程,它返回combine 全部3个地址值。 但我在c
中得到错误答案 0 :(得分:0)
您无法在Linq-to-entity查询中调用存储过程,因为存储过程不可组合(不能在SQL select语句中使用)。你必须使用它:
ObjectParameter address = new ObjectParameter("Address", typeof(string));
return (from tbl in objDatabase.COMPs.ToList() // Here you change it to Linq-to-Objects
select new CompanyReport_ComplexType
{
Address=objDatabase.ReturnAddressDetailForCompany(tbl.COMP_ADD1,tbl.COMP_ADD2,
tbl.COMP_ADD3, address).FirstOrDefault(), // Here you must iterate result set from your SP
City = tbl.COMP_CITY,
CompanyCode = tbl.COMP_NO,
CompanyName = tbl.COMP_NAME
}).ToList();
但它会为结果集中的每条记录调用存储过程(=它会为每条记录进行额外的数据库往返)。