public class Customer
{
public int CustomerId { get; set; }
public string MembershipId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string EmailAddress { get; set; }
}
public class Company
{
public string MembershipId { get; set; }
public string Name {get; set;}
}
public class CustomersBankAccount
{
public string Name {get; set;}
public int CustomerId { get; set; }
}
当您想使用代码优先约定构建数据库时,约定是在您的属性中集成一个“Id”(外键)部分。当然,我建议将所有属性声明为虚拟,以便 EF 可以掌握您的代码并启用某些功能。就像一个高效的跟踪机制
所以:如果您在名为 ID 的对象上有一个属性,EF 假定该属性包含主键值并在 SQL Server 中设置一个自动递增(标识)键列来保存该属性值。
编辑:
“在对象上”是指客户的对象。本质上,您的示例中的主键在 customer 中,外键在与 customer 相关的所有其他表中。主键不能重复或为空。外键 - 是的。同一客户可能有多个银行账户。:) 因此,如果您想知道设置钥匙的管道在哪里,请停下来。MVC 可以只查看上面的代码并决定(在脚手架选择上)如何在数据库中制作表格。除了您已经看到的内容(“Id”和结尾)之外,您不必在代码中指明任何内容
根据我的评论编辑:
public class Customer
{
public int CustomerId { get; set; }
[Remote("CheckMembershipIdActionMethod", "CorrespondingController")]
public string MembershipId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string EmailAddress { get; set; }
}