簡體   English   中英

具有一對多關系的 EntityFramework Core 總是返回一個空集合

[英]EntityFramework Core with one-to-many relation always returns an empty collection

我正在使用 IEntityTypeConfiguration 接口來配置實體。 因此,例如,我有 2 個名稱為:學生/課程。

有表的配置:

課程

builder.HasMany(x => x.Students).WithOne().HasForeignKey(x => x.CourseId);

學生

builder.HasOne(x => x.Course).WithMany().HasForeignKey(x => x.CourseId);

下一步是創建測試以確保正確加載數據。 我有一個將實體轉換為 model 的存儲庫,但首先我想使用我的 Context 手動測試它。

我創建了一個課程和學生列表,有學生(EntityManager 將假數據添加到 Context 並保存),實際上默認創建了 100 個實體:

var students = await EntityManager.CreateManyAsync<Student>(
                x => x.CourseId = course.Id);

然后我只搜索課程,包括學生並通過 FluentAssertions 對其進行測試。

var set = TestDatabase.Context.Set<Course>();
var course = await set.Include(x => x.Students).FirstAsync(x => x.Id == course.Id);
course.Students.Should().NotBeEmpty();

實體在這里,但集合是空的(但不是 null,因為我沒有初始化它)。

對於單元測試,我使用實際的 Context 和 InMemoryDatabase。

實體集合:

public virtual ICollection<Student> Students { get; set; }

我怎么了?

PS EntityManager 中沒有錯誤,關系 id 設置正確。

我從 Student 表中刪除了關系,並將 Course 配置中的 WithOne() 更改為 WithOne(x=>x.Course),現在它完全可以工作了。 感謝@Uriil

暫無
暫無

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

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