[英]EF one-to-one not working
我有一个班级用户:
[Table("User")]
public class User {
public User() {
BusinessNumber = new BusinessNumber();
}
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public string Username { get; set; }
[Required]
public virtual BusinessNumber BusinessNumber { get; set; }
}
和商家编号:
public class BusinessNumber {
public BusinessNumber() {
Subscribers = new List<SubscriberNumber>();
}
[Key, ForeignKey("User")]
public int UserId { get; set; }
public string Sid { get; set; }
public string PhoneNumber { get; set; }
public string VenueName { get; set; }
public virtual User User { get; set; }
public List<SubscriberNumber> Subscribers { get; set; }
}
public class SubscriberNumber {
public SubscriberNumber() {}
[Key]
public int SubscriberNumberId { get; set; }
public string PhoneNumber { get; set; }
}
使用以下映射:
public class NumberConfiguration : EntityTypeConfiguration<BusinessNumber> {
public NumberConfiguration() {
HasKey(c => c.UserId);
Property(c => c.UserId).HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
HasRequired(c => c.User).WithRequiredDependent(s => s.BusinessNumber);
}
}
以下代码将产生一个新的BusinessNumber,而没有提供ID。 如果我检查数据库,我看到ID的用户1
和ID为BusinessNumber 1
,但user.BusinessNumber.Id为0。
var user = db.Users.First(s => s.Username == username);
我尝试使用Include
但出现多重错误:
var user = db.Users.Include(s => s.BusinessNumber).First(s => s.Username == username);
我究竟做错了什么?
您确定此代码正确吗:
public User()
{
BusinessNumber = new BusinessNumber();
}
因为它将创建一个ID
为零的新BusinessNumber
; 听起来像您遇到的问题。 我认为您首先需要将null
保留null
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.