实体框架代码第一客户和地址注册
本文关键字:地址 注册 客户 框架 代码 实体 | 更新日期: 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
的第三个数据模型,它本质上是customer
和address
模型的复合。这将允许我构建一个强类型视图。
或者,它是可能的控制器传递2个模型到1个视图?
我不知道这是否是解决这个问题的最好方法,或者事实上它是否可能。任何想法吗?
如果您的客户模型有一个address属性,那么您将能够从您的视图中访问它。例如
@Html.DisplayTextFor(x => model.Address.Addressline1)
你的视图模型的想法是一个很好的,但它不是必要的,对于这个特殊的情况。
编辑:正如我下面的朋友指出的,如果你使用延迟加载,你可能需要手动加载Address属性。