gpt4 book ai didi

c# - 从 3.1.2 版升级到 5.0.3 版后,Entity Framework 核心 Include() 不起作用

转载 作者:行者123 更新时间:2023-12-04 01:05:56 25 4
gpt4 key购买 nike

我有一个使用 .net core 3.1 运行的项目。升级到 .net 5 和 Entity Framework 核心到 5.0.3 后,包含不再起作用。
我有这些课

public class Question
{
[Key]
public Guid Id { get; set; }
public string QuestionCode { get; set; }
[ForeignKey("AnswersId")]
public Answer Answers { get; set; }
}

public class Answer
{
[Key]
public Guid Id { get; set; }
public string Answers { get; set; }
public int Score { get; set; }
}
该关系定义如下:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Question>()
.HasOne(q => q.Answers);
}
和这个简单的 LINQ:
return _context.Questions
.Include(q => q.Answers)
.FirstOrDefault(s => s.Id == id);
然而。版本升级后包含不起作用。不工作是指返回的值不包括答案。仅返回主实体,子实体中的所有字段都为空。

最佳答案

我不是 100% 确定这是否是问题所在,因为您之前说过它运行良好,但可能是您的关系在 OnModelCreating 中没有正确配置。因为它没有调用 WithOneWithMany是正确的。
来自 docs :

After calling this method, you should chain a call to WithMany(String) or WithOne(String) to fully configure the relationship. Calling just this method without the chained call will not produce a valid relationship.


有一个 breaking change in EF 5 related to the semantics of a required nagivation property from the principal (Question) to the dependant (Answer)这可能是升级库后错误行为的解释。
所以让我们试一试这个......尝试像这样配置你的关系:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Question>()
.HasOne(q => q.Answers);
.WithOne()
.IsRequired();
}

关于c# - 从 3.1.2 版升级到 5.0.3 版后,Entity Framework 核心 Include() 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66489657/

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