簡體   English   中英

外鍵在一對一關系中始終為 0

[英]Foreign key is always 0 in relation one to one

在關系 1 - 1 中,我在每個表中都有兩個外鍵,它們應該告訴我我指的是什么對象。 在表“WebAppUser”中,外鍵工作正常,但在表“UserPermissions”中,我總是得到 0 作為外鍵的 ID(列:“WebAppUserId”,它是對特定“WebAppUser”的引用)。

我的代碼:

public class UserPermissions
{
    [Key]
    public int UserPermissionsId { get; set; }
    //public int? WebAppUserId { get; set; }
    public int WebAppUserId { get; set; }
    public virtual WebAppUser WebAppUser { get; set; }
    /*public virtual IEnumerable<WebAppUserClaims> Claims { get; set; }
    public virtual IEnumerable<WebAppUserLogin> Logins { get; set; }
    public virtual IEnumerable<WebAppUserToken> Tokens { get; set; }*/
    public virtual IEnumerable<WebAppUserRole> WebAppUserRoles { get; set; }
}



public class WebAppUser /*: IdentityUser<int>*/
{
    [Key]
    public int Id { get; set; }
    //1:1
    public int UserProfileId { get; set; }
    public virtual UserProfile UserProfile { get; set; }
    //1:1
    public int UserCredentialsId { get; set; }
    public virtual UserCredential Credentials { get; set; }
    //1:1
    public int PermissionsId { get; set; }
    public virtual UserPermissions UserPermissions { get; set; }
}



//WebAppUser - UserPermissions 1-1
modelBuilder.Entity<WebAppUser>()
.HasOne(x => x.UserPermissions)
.WithOne(y => y.WebAppUser)
.HasForeignKey<WebAppUser>(x => x.PermissionsId);

WebAppUser 表視圖:

UserPermissions 表視圖

我試過這樣的實體配置,但它也不起作用:

            modelBuilder.Entity<WebAppUser>()
           .HasOne(x => x.UserPermissions)
           .WithOne(y => y.WebAppUser)
           .HasForeignKey<WebAppUser>(x => x.PermissionsId);

            modelBuilder.Entity<UserPermissions>()
            .HasOne(x => x.WebAppUser)
            .WithOne(y => y.UserPermissions)
            .HasForeignKey<UserPermissions>(x => x.WebAppUserId);```

在 fluentApi 中嘗試此更改

modelBuilder.Entity<WebAppUser>()
.HasOne<UserPermissions>(x => x.UserPermissions)
.WithOne(y => y.WebAppUser)
.HasForeignKey<UserPermissions>(x => x.WebAppUserId);

並且不要忘記當您向該表發出請求以使用 Include(x => x.UserPermissions)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM