第二个数据行在EF Core中具有空关系

时间:2018-07-04 13:23:45

标签: sqlite .net-core entity-framework-core

我有一个数据库,其中我在名为Bets的表中的几行中模拟了数据,方法是用数字1填充前四行,用数字{{ 1}}。有一个2表,其中的团队行对应于ID Team1

我正在将.NET Core 2.1.0和EF Core 2.1.0与SQLite数据库一起使用。有一个类2与类Bet有多对一的关系。它们如下所示:

Team

要访问数据,我使用以下语法:

public class Bet
{
    public int Id { get; set; }

    public int TeamId { get; set; }
    public Team Team { get; set; }
}

public class Team
{
    public int Id { get; set; }
    public string Name { get; set; }
}

当我返回结果时, 每秒 行将public class BettingDbContext : DbContext { public BettingDbContext(DbContextOptions<BettingDbContext> options) : base(options) { } public virtual DbSet<Bet> Bets { get; set; } public virtual DbSet<Team> Teams { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<Bet>(entity => { entity.ToTable("Bets"); entity.HasIndex(e => e.Id) .IsUnique(); entity.HasOne(b => b.Team) .WithOne(); }); modelBuilder.Entity<Team>(entity => { entity.ToTable("Teams"); entity.HasIndex(e => e.Id) .IsUnique(); }); } } 设置为其关系属性null。这是即时窗口的一些输出:

Team

有什么想法会导致这种情况吗?

1 个答案:

答案 0 :(得分:2)

根据

  

用数字1填充前四行,用数字2填充后四行

BetTeam之间的关系必须是多对多的。使用流畅的API时,您是在告诉EF Core一对一对待,因此在开始处理数据时会感到困惑-实际行为无关紧要,显然这是您所获取的怪异数据,最好是应该是一个例外,但是无论如何,在EF Core中有很多事情需要等待实现,因此我们可以接受。

话虽如此,只需将.WithOne()更改为.WithMany()。问题解决了。