I have a class User:
[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; }
}
And BusinessNumber:
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; }
}
With the following mapping:
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);
}
}
The following code results in a new BusinessNumber, without the Id supplied. If I inspect the database, I see a User with Id 1
and a BusinessNumber with Id 1
, yet user.BusinessNumber.Id is 0.
var user = db.Users.First(s => s.Username == username);
I tried using an Include
but get a multiplicity error:
var user = db.Users.Include(s => s.BusinessNumber).First(s => s.Username == username);
What am I doing wrong?
Are you sure this code is correct:
public User()
{
BusinessNumber = new BusinessNumber();
}
Because it will create a new BusinessNumber
with an ID
zero; sounds like the issue you are experiencing. I think the singulars you need to leave null
initially.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.