簡體   English   中英

MySQL / EF 6.0 Core 一對一關系返回 null

[英]MySQL / EF 6.0 Core One-to-One relationship returns null

我正在使用 EF Core 6.0 和 MySQL (Pomelo.EntityFrameworkCore.MySql v6.0) 我首先通過代碼設置我的數據庫。 這是我的 2 個模型(簡化):

public class Store : BaseEntity
{
     public string Name { get; set; }
     public virtual User? Owner { get; set; }
     public int? OwnerId { get; set; }
}
public class User : BaseEntity
{
     public string? Name { get; set; }
     public virtual Store? Store { get; set; }
}

對於兩者,我都有

[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }

作為主鍵(來自 BaseEntity)。

我還在這里啟用了延遲加載:

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
    optionsBuilder.UseLazyLoadingProxies();
}

在 Program.cs 中:

builder.Services.AddDbContext<AppDbContext>(opt => opt
    .UseLazyLoadingProxies()
    .ConfigureWarnings(warning => warning.Ignore(CoreEventId.DetachedLazyLoadingWarning))
    .EnableSensitiveDataLogging()
    .UseMySql(
        Globals.DB_CONNECTION_STRING, new MySqlServerVersion(Globals.MYSQL_SERVER_VERSION),
        o => o.UseQuerySplittingBehavior(QuerySplittingBehavior.SplitQuery)
            ));

現在,對於問題 - 我正在嘗試使用以下代碼從數據庫中獲取商店:

Store? store = await dbContext.Stores
    .Include(x => x.Owner)
    .FirstOrDefaultAsync(x => x.Owner.Id == ownerId && x.Id == storeId);

我正在獲取商店詳細信息,但所有者 object 和 OwnerId 是 null。 我可以看到數據庫中的數據(例如,我看到為這個特定商店設置了 OwnerId),但在代碼中,它是 null。

我在 SO 上讀到 Pomelo 在設置導航屬性方面存在一些問題,所以我在 OnModelCreating 中手動設置它,如下所示:

modelBuilder.Entity<User>()
    .HasOne(x => x.Store)
    .WithOne(x => x.Owner)
    ;

但這並沒有奏效。

相同的配置與 MSSQL 完美配合。

有什么想法嗎?

謝謝

在 WithOne 之后調用 HasForeignKey 並指向 OwnerId。

暫無
暫無

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

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