0

有時候,你想存儲誰註冊或創建了一個用戶帳戶。它可以是自己註冊的用戶,也可以是其他註冊他的用戶帳戶,例如管理員帳戶。因此,用戶表將是這樣的:如何將模型屬性與ASP.NET MVC中的相同模型關聯?

public class User : Identity 
{ 
    public int Id { get; set; } 
    public string UserName { get; set; } 
    public string Email { get; set; } 
    public string Name { get; set; } 
    // this is the part that I'd to relate to the same model 
    [ForeignKey("Id")] 
    public virtual User RegisteredBy { get; set; } 
} 

使用數據註釋或流暢API,你會如何關聯的User.RegisteredBy到USER.ID?

在此先感謝!

回答

1

喜歡的東西在你的類

public class User : Identity 
{ 
    public int Id { get; set; } 
    public string UserName { get; set; } 
    public string Email { get; set; } 
    public string Name { get; set; } 

    // this is the self referential part 
    public int? RegisteredById { get; set; } 
    public virtual User RegisteredBy { get; set; } 
    public virtual ICollection<User> RegisteredUsers { get; set; } 
} 

,然後在你的DbContext

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    modelBuilder.Entity<User>() 
     .HasOptional(x => x.RegisteredBy) 
     .WithMany(x => x.RegisteredUsers) 
     .HasForeignKey(x => x.RegisteredById); 
} 

這是未經測試,但我前一陣做了一個項目類似的東西,它能正常工作。

+0

謝謝!看起來很有希望。我必須嘗試這個。 – doncadavona

+0

這工作!謝謝! – doncadavona

1
protected override void OnModelCreating(ModelBuilder modelBuilder) 
{ 
    modelBuilder.Entity<User>() 
       .HasOptional(c => c.RegisteredBy) 
       .WithMany() 
       .HasForeignKey(c => c.RegisteredById); 
} 

您可以用上面流利的API代碼和你的類應該是這樣的

public class User : Identity 
{ 
public int Id { get; set; } 
public string UserName { get; set; } 
public string Email { get; set; } 
public string Name { get; set; } 

public int? RegisteredById { get; set; }     

public User RegisteredBy { get; set; } 
} 
+0

這也可以,謝謝!和@ ste-fu的回答一樣。 – doncadavona

相關問題