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