2014-10-07 61 views
0

我有一類用戶: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用戶和ID爲1一個BusinessNumber,但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); 

我在做什麼錯?

回答

2

你確定這個代碼是正確的:

public User() 
{ 
    BusinessNumber = new BusinessNumber(); 
} 

因爲它會創建一個新的BusinessNumberID零;聽起來像你遇到的問題。我認爲你最初需要離開null的單數。

相關問題