繁体   English   中英

EF一对一无效

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM