1

我有一个使用名为“客户”的表创建的模型。

它包含以下字段:

  • 客户资料 ID
  • 顾客姓名
  • 出生日期
  • 地址1
  • 城市
  • 状态
  • 压缩
  • 创建于
  • 由...制作

我对搜索表的存储过程 (CustomerProfiles_Search) 进行了“函数导入”。(由于敏感信息,我无法发布 Sproc)。“返回集合”设置为“实体:客户配置文件”。它返回以下内容:

  • 顾客姓名
  • 出生日期
  • 地址1

现在这是我感到困惑的地方。 我的控制器正在传递要搜索的字段,然后将其传递到返回列表的“网关”中。

我的控制器:

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();
    }
}

但是,当我尝试将结果输出到列表时,会出现错误:

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; }
            }
    }
}

但我不知道该怎么做?有人可以告诉我我在这里做错了什么。任何帮助是极大的赞赏。

4

1 回答 1

0

问题是您的 sproc 并没有返回您需要的所有列,因为它应该映射到CustomerProfile.

当它尝试从 中读取属性时DataReader,找不到名为 的列CustomerProfileID,因此出现以下消息:

类型的成员“CustomerProfileID”在数据读取器中没有同名的对应列

SearchResults看起来不错。您只需将“返回集合”设置为“实体:搜索结果”

于 2012-04-04T17:55:59.983 回答