在我的详细信息视图中显示客户联系人列表

时间:2015-01-09 18:40:52

标签: asp.net entity-framework asp.net-mvc-5 automapper ef-database-first

我的总体目标是能够在我的CustomerController->详细信息视图中显示所有客户信息,并且不知道如何传递所有这些数据:
客户信息 - (直接在Customer表中的字段) 客户联系人
客户位置
客户文件

我能够很好地显示客户信息,因为我正在做这样的事情并将其传递给我的观点:

public ActionResult Details(int? id)
{
    Model.Customer customer = _custService.GetCustByID(id);
    return View(customer);
}

我完全不知道如何从这一点开始,这使我能够在我的视图中访问直接的客户属性,以显示来自不同表格的所有其他相关客户项目列表。

以下是我项目设置的一些细节: 我正在使用EF6DbFirst,我还为每个实体创建一个Dto,并使用AutoMapper映射所有内容。我的Customer.cs模型具有所有客户的直接属性,以及对于一对多关系的事物看起来像这样的一对:

public List<CustomerContact> Contacts { get; set; }

现在在我的AutoMapper配置中,我做了以下操作,因为我的表在EF中被命名为CustomerContacts:

    CreateMap<Customer, Model.Customer>()
        .ForMember(dest => dest.Contacts, opt => opt.MapFrom(src => src.CustomerContact));

    CreateMap<Customer_GetAll_Result, Model.Customer>();

我不确定这是否是使用AutoMapper执行此操作的正确方法,或者在访问其他表时还有其他任何我需要告诉它的方法。我想我必须映射此属性的唯一原因是因为我想将名称更改为c.Contacts而不是c.CustomerContacts。

提问: 正如您所看到的,我还尝试映射来自我的GetAll存储过程的值,我的custService.GetAll()在我的控制器中使用它来绑定客户网格。在这种情况下,我不认为这很重要,但我假设我是否需要遍历来自proc的列表并获取每个客户的联系人,因为我的存储过程仅返回直接客户属性,这就是为什么我不能为那个做映射的原因。有没有解决方法呢?

0 个答案:

没有答案