Entity framework core 实体框架。将外键视为主键的核心

Entity framework core 实体框架。将外键视为主键的核心,entity-framework-core,Entity Framework Core,我有下面显示的两个类。尝试插入两个具有相同标识ID的HeroEntry时,上下文仅保存两个条目中的一个。你知道我做错了什么吗 public class Identity { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int IdentityId { get; set; } public string FirstName { get; set; } public st

我有下面显示的两个类。尝试插入两个具有相同
标识ID的
HeroEntry
时,上下文仅保存两个条目中的一个。你知道我做错了什么吗

public class Identity
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int IdentityId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Email { get; set; }
    public string Phone { get; set; }
    [JsonIgnore]
    public virtual HeroEntry HeroEntry { get; set; }
}

public class HeroEntry
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int HeroEntryId { get; set; }
    public int IdentityId { get; set; }
    public SuperHeroEnum HeroType { get; set; }
    public DateTime Startdate { get; set; }
    public DateTime EndDate { get; set; }

    [ForeignKey("IdentityId")]
    public virtual Identity Identity { get; set; }
    public virtual List<SuperHeroBreak> SuperHeroBreaks { get; set; }
}

克里斯蒂安是对的。将导航属性添加到identity类解决了我的问题。谢谢你的帮助

你可以发布添加代码吗?对不起,添加了。我预计受影响的将返回2,但它将返回1。如果通过单次插入添加记录会怎么样?在表之间定义了
one-to-one
关系。验证是否为
IdentityId
属性定义了约束。Cristian Szpisjak是正确的。。。您应该在identity对象(导航属性)中有一个HeroEntry集合
var b = new HeroEntry()
            {
                HeroType = SuperHeroEnum.BATMAN,
                Startdate = DateTime.Parse("12/24/2018"),
                EndDate = DateTime.Parse("01/04/2019"),
                IdentityId = 1,
            };

var r = new HeroEntry()
            {
                HeroType = SuperHeroEnum.ROBIN,
                Startdate = DateTime.Parse("12/24/2018"),
                EndDate = DateTime.Parse("01/04/2019"),
                IdentityId = 1,
            };

context.SuperHeroes.AddRange(b, r);

var affected = context.SaveChanges();