gpt4 book ai didi

c# - 内存数据库中的 EF Core 不保存 ICollection 对象列

转载 作者:行者123 更新时间:2023-12-04 14:55:00 28 4
gpt4 key购买 nike

我读到 InMemory Database with EF Core 有局限性,并且正在考虑转向 sqlite 进行开发,但是,我想知道这种行为是 InMemory Database 的局限性还是我的局限性。我曾尝试阅读文档,但找不到明确提及这一点的 Material 。我有以下内容:

    // Startup
services.AddDbContext<StudentResultsContext>(opt =>
opt.UseInMemoryDatabase("StudentResultsList"));
// context
public class StudentResultsContext : DbContext
{
public StudentResultsContext(DbContextOptions<StudentResultsContext> options)
: base(options)
{
}

public DbSet<StudentResults> StudentResultsList { get; set; }
}

// classes
public class StudentResults
{
public long ID { get; set; }
public long ParentId { get; set; }
public string Name { get; set; }
public ICollection<ExamScores> Results { get; set; }
}

public class ExamScores
{
public long ID{ get; set; }
public long StudentId { get; set; }
public Exam ExamType { get; set; }

public double Score { get; set; }
}
// controller
[HttpPost]
public async Task<ActionResult<StudentResults>> PostStudentResults(StudentResults studentResults)
{
_context.StudentResultsList.Add(studentResults);
await _context.SaveChangesAsync();

return CreatedAtAction(nameof(GetStudentResults), new { id = studentResults.ID }, studentResults);
}

Results 在数据库中保存为 null,即使从 post 声明它们是创建的返回,就像这样

帖子 enter image description here

get 返回什么 enter image description here

这是我做的还是 InMemory Databse 的问题?

最佳答案

我猜你没有做任何事情来加载相关数据,因此你得到 null for Results

尝试使用 context.StudentResultsList.Include(s => s.Results) 获取保存的实体。

检查 Loading Related Data用于其他策略。

关于c# - 内存数据库中的 EF Core 不保存 ICollection 对象列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68227113/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com