实体框架代码第一客户和地址注册

本文关键字:地址 注册 客户 框架 代码 实体 | 更新日期: 2023-09-27 18:16:40

一个用于customer,一个用于address

所需功能当客户注册时,他们在同一视图中输入他们的个人详细信息,如姓名,电话以及地址详细信息。

当前功能

目前,EF scaffolding提供了一个地址下拉列表供您选择。

<

当前代码/strong>

public class Customer
{
    public int CustomerId { get; set; }
    public string FirstName { get; set; }
    [Required]
    public string Surname { get; set; }
    [Required]
    ...
    Customer Fields
    ...
    public int AddressId { get; set; }
    public virtual Address Address { get; set; }
}
public class Address
{
    [Key]
    public int AddressId { get; set; }
    ...
    Address Fields
    ...
    // Navigation Properties
    public virtual List<Customer> Customer { get; set; }
}

当播种数据库时,我可以这样做:

new List<Customer>
    {
        new Customer 
            { 
                ** Customer Fields ** , 
                Address = new Address { ** Address Fields ** }
            }
    }.ForEach(c => context.Customers.Add(c));
base.Seed(context);
<

我的想法/strong>

我最初的想法是,我应该创建一个名为CustomerWithAddress的第三个数据模型,它本质上是customeraddress模型的复合。这将允许我构建一个强类型视图。

或者,它是可能的控制器传递2个模型到1个视图?

我不知道这是否是解决这个问题的最好方法,或者事实上它是否可能。任何想法吗?

实体框架代码第一客户和地址注册

如果您的客户模型有一个address属性,那么您将能够从您的视图中访问它。例如

@Html.DisplayTextFor(x => model.Address.Addressline1)

你的视图模型的想法是一个很好的,但它不是必要的,对于这个特殊的情况。

编辑:正如我下面的朋友指出的,如果你使用延迟加载,你可能需要手动加载Address属性。