i_l*_*ack 5 c# entity-framework primary-key
我创建了一个数据库,根据该数据库,用户配置文件由以下两个类组成:
public class Usr
{
[Key()]
public int UsrID { get; set; }
public virtual UsrType UsrType { get; set; }
public virtual UsrStatus UsrStatus { get; set; }
[Required]
[MaxLength(100, ErrorMessage = "Email can only contain {0} characters")]
public string UsrEmail { get; set; }
[Required]
[MaxLength(32, ErrorMessage = "Password can only contain {0} characters")]
[MinLength(8, ErrorMessage = "Password must be at least {0} characters")]
public string UsrPassword { get; set; }
}
public class UsrDetails
{
[ForeignKey("UsrID")]
[Required]
public virtual Usr Usr { get; set; }
[Required]
[MaxLength(40, ErrorMessage = "Name can only contain {0} characters")]
public string UsrName { get; set; }
[Required]
[MaxLength(40, ErrorMessage = "Surname can only contain {0} characters")]
public string UsrSurname { get; set; }
[Required]
[MaxLength(20, ErrorMessage = "Country can only contain {0} characters")]
public string UsrCountry { get; set; }
[Required]
[MaxLength(20, ErrorMessage = "City can only contain {0} characters")]
public string UsrCity { get; set; }
[Required]
[MaxLength(40, ErrorMessage = "Street can only contain {0} characters")]
public string UsrStreet { get; set; }
[Required]
public int UsrNum { get; set; }
[Required]
public int UsrPostalCode { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我想通过同时作为主键来连接它们,UsrID并且我得到一个UsrDetails没有主键的错误,因为我正在使用外键属性.有任何想法吗?
您需要声明一个UserDetails与属性中声明的名称相同的关键属性ForeignKey:
public class UsrDetails
{
[Key]
public int UsrID{ get; set; }
[ForeignKey("UsrID")]
public virtual Usr Usr { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
您的所有实体都必须具有 PK 属性。在这种情况下,如果您表示一对一关系,则依赖实体的 PK 也是 FK。如果您需要更多信息,可以查看本教程。
| 归档时间: |
|
| 查看次数: |
321 次 |
| 最近记录: |