MVC返回完整模型以外的列的列表

时间:2012-04-04 17:22:18

标签: c# visual-studio-2010 entity-framework

我有一个名为“Customers”的表创建的模型。

它包含以下字段:

  • CustomerProfileID
  • 客户名称
  • 出生日期
  • 地址1
  • 国家
  • 邮编
  • CreatedOn
  • CreatedBy

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

  • 客户名称
  • 出生日期
  • 地址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();
    }
}

但是,当我尝试将结果输出到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; }
            }
    }
}

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

1 个答案:

答案 0 :(得分:0)

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

当它尝试从DataReader读取属性时,找不到名为CustomerProfileID的列,因此显示消息:

  

类型成员'CustomerProfileID'在数据读取器中没有相应名称的相应列

你的SearchResults看起来不错。您只需将“返回集合”设置为“实体:SearchResults”