我有一个名为“Customers”的表创建的模型。
它包含以下字段:
我对搜索表的存储过程(CustomerProfiles_Search)进行了“功能导入”。 (由于敏感信息,我无法发布Sproc)。 “返回集合”设置为“实体:CustomerProfile”。它返回以下内容:
现在我感到很困惑。我的控制器传入字段进行搜索,然后将其传递到我的“网关”,返回列表。
我的控制器:
public ActionResult GetRowCount(string CustomerName, string BirthDate, string Address1, string City, string State, string Zip)
{
List<CustomerProfile> searchResults = CustomerProfileGateway.Search(CustomerName, BirthDate, Address1, City, State, Zip);
int count = searchResults.Count();
string rowCount = count.ToString();
if (Request.IsAjaxRequest())
return Content(rowCount);
else
return RedirectToAction("Index", "OneView");
}
...在我的 CustomerProfileGateway.cs 文件中:
public static List<CustomerProfile> Search(string CustomerName, string BirthDate, string Address1, string City, string State, int Zip)
{
using (ModelEntities context = new ModelEntities())
{
return context.CustomerProfiles_Search(CustomerName, BirthDate, Address1, City, State, Zip).ToList();
}
}
但是,当我尝试将结果输出到List时,我在执行此操作时出错:
The data reader is incompatible with the specified 'SVPModel.CustomerProfile'. A member of the type, 'CustomerProfileID', does not have a corresponding column in the data reader with the same name.
我想我需要创建一个返回的模型。
我创建了以下内容:
namespace Project.ABC.Objects
{
class SearchModel
{
public class SearchResults
{
public string CustomerName { get; set; }
public string BirthDate { get; set; }
public string Address1 { get; set; }
}
}
}
但我不知道怎么做?有人可以告诉我这里我做错了什么。任何帮助是极大的赞赏。
答案 0 :(得分:0)
问题是你的sproc没有返回你需要的所有列,因为它应该映射到CustomerProfile
。
当它尝试从DataReader
读取属性时,找不到名为CustomerProfileID
的列,因此显示消息:
类型成员'CustomerProfileID'在数据读取器中没有相应名称的相应列
你的SearchResults
看起来不错。您只需将“返回集合”设置为“实体:SearchResults”