实体框架.Core将外键作为主键

时间:2018-09-07 14:17:44

标签: entity-framework-core

我有以下两个类。当尝试使用相同的HeroEntry插入两个IdentityId时,上下文仅保存两个条目之一。有什么想法我做错了吗?

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; }
}

添加代码:

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();

1 个答案:

答案 0 :(得分:0)

克里斯蒂安是正确的。将导航属性添加到身份类中解决了我的问题。谢谢您的帮助!