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