C# 实体框架:对象为空,但外键为';T

C# 实体框架:对象为空,但外键为';T,c#,model,.net-core,foreign-keys,ef-core-2.1,C#,Model,.net Core,Foreign Keys,Ef Core 2.1,我正在学习.NET核心和EF核心,但我已经遇到了一个问题 我从头开始编写代码 这是我的密码: public class DBContext : DbContext { public DbSet<Muscle> Muscle { get; set; } public DbSet<Exercice> Exercice { get; set; } } public class Muscle { [Key] public int id { get;

我正在学习.NET核心和EF核心,但我已经遇到了一个问题

我从头开始编写代码

这是我的密码:

public class DBContext : DbContext
{
    public DbSet<Muscle> Muscle { get; set; }
    public DbSet<Exercice> Exercice { get; set; }
}
public class Muscle
{
    [Key]
    public int id { get; set; }
    public string nom { get; set; }

    public virtual ICollection<Exercice> Exercices { get; set; }
}
public class Exercice
{
    [Key]
    public int id { get; set; }
    public string libelle { get; set; }

    public int MuscleId { get; set; }
    public virtual Muscle Muscle { get; set; }
}
公共类DBContext:DBContext
{
公共数据库集{get;set;}
公共数据库集练习{get;set;}
}
公共阶层肌肉
{
[关键]
公共int id{get;set;}
公共字符串nom{get;set;}
公共虚拟ICollection exercies{get;set;}
}
公共课练习
{
[关键]
公共int id{get;set;}
公共字符串libelle{get;set;}
公共int MuscleId{get;set;}
公共虚拟肌肉{get;set;}
}
当我试图得到我的第一个“练习”时,他的“肌肉”是“1”,但他的“肌肉”是空的。。。 如果我试图得到我的第一块“肌肉”,“锻炼”也是空的

我必须做些什么才能让这一切顺利进行吗?
谢谢

在运动课上,你的肌肉等级主键应该与外键匹配。像这样

public class Muscle
{
    [Key]
    public int MuscleId { get; set; }
    public string nom { get; set; }
    public virtual ICollection<Exercice> Exercices { get; set; }
}
公共类肌肉
{
[关键]
公共int MuscleId{get;set;}
公共字符串nom{get;set;}
公共虚拟ICollection exercies{get;set;}
}
或使用 [ForeignKey]属性。
你可以在这里读更多

我尝试使用[ForeignKey],但没有更改…:/使用“相同的名称”不会改变任何事情,因为我的“MuscleId”不是空的。从DbContext查询时,仅使用
Include()
的“Muscle”isTry。下面是我的一个项目的示例:
differencecontext db=newdifferencecontext();var differences=db.differences.Include(d=>d.Branch).Include(d=>d.DifferenceType).Include(d=>d.State).ToList()
。如果没有
Include()
这三个属性始终为空(Branch、DifferenceType、State),则只返回键(BranchId,…等等)。我认为EntityFramework和EntityFrameworkCore也是如此