【发布时间】:2017-04-15 06:34:58
【问题描述】:
我想检索给定口袋妖怪的遭遇列表,因为口袋妖怪可以在很多地方遇到,所以我一直在尝试许多变体
var currentPokemon = _context.Pokemon
.Where(mon => mon.Id == id)
.Include(mon => mon.Encounters)
.FirstOrDefault();
结果是一个包含所有相关数据的口袋妖怪对象,但只有第一次遭遇被检索并放入一个集合中,结果如下:
查看数据库,大约有 20 次与毛毛虫的遭遇,我想访问所有这些,但只能获得一个。
Pokemon 类的样子(省略不相关的字段):
[Table("pokemon")]
public partial class Pokemon {
public Pokemon()
{
Encounters = new HashSet<Encounters>();
}
[Column("id")]
public long Id { get; set; }
[Required]
[Column("identifier", TypeName = "VARCHAR(79)")]
public string Identifier { get; set; }
.
.
.
[InverseProperty("Pokemon")]
public virtual ICollection<Encounters> Encounters { get; set; }
}
邂逅是什么样子的:
public partial class Encounters {
.
.
.
[ForeignKey("PokemonId")]
[InverseProperty("Encounters")]
public virtual Pokemon Pokemon { get; set; }
}
数据库数据:
我在这里误会了什么?
【问题讨论】:
-
生成的sql是什么?上网看看如何获取sql查询
-
你能显示db的记录吗?你指的是正确的数据库吗?
-
@sampath i.imgur.com/s9N7WyP.png
-
您指的数据库是否正确?
-
我无法使用全新的 DbContext 和最少的数据重现此行为。我按预期得到了口袋妖怪和遭遇。您未显示的代码中必须有其他内容。您发布的代码是可以的,并且您执行操作的顺序虽然不是最佳的,但确实会生成相同的 sql。
标签: c# entity-framework linq sqlite entity-framework-6