我想设置一些表的关系,并使表中的某些列可以为null。
[Table("tbl_useraccount")]
public class AccountViewModels
{
[Key]
public string AccountId { get; set; }
public string Email { get; set; }
public string HashPassword { get; set; }
}
这是我想建立关系的表格:
[Table("tbl_userprofile")]
public class UserProfileViewModels
{
[Key]
public int Id { get; set; }
public string AccountId { get; set; }
public string Address { get; set; }
public int PhoneNumber { get; set; }
}
我的问题是:如何设置AccountId
(在表tbl_useraccount
中)是主键,并且作为模型表tbl_userprofile
中的外键?
我的子问题是:是否有必要为每个列名设置NULL
或NOT NULL
?如果有必要,我该怎么做?
p / s:我使用的是MVC 5和SQL Server。
答案 0 :(得分:0)
我的第一个注意事项是您不使用viewmodels进行数据库生成。 ViewModels仅用于您的视图。
要创建关系,您应该将AccountModel添加到UserProfile,我添加了虚拟以启用延迟加载。还要将ForeignKey数据注释添加到要将键映射到的额外属性(可选)
[Table("tbl_useraccount")]
public class AccountModel
{
[Key]
public string AccountId { get; set; }
public string Email { get; set; }
public string HashPassword { get; set; }
}
[Table("tbl_userprofile")]
public class UserProfileModels
{
[Key]
public int Id { get; set; }
public string AccountId { get; set; }
public string Address { get; set; }
[ForeignKey("AccountModel")]
public int PhoneNumber { get; set; }
public virtual AccountModel AccountModel { get; set;}
}
如果您希望字段不为空,如果这是可能的话。使用[必需]数据注释。 “Public int PhoneNumber”不能为null,您必须按如下方式编写它:“Public int?PhoneNumber”。