У меня есть класс User:EF один-к-одному не работает
[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; }
}
И 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; }
}
С следующим отображением:
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 1
и BusinessNumber с Id 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);
Что я делаю неправильно?