【发布时间】:2018-09-08 04:03:53
【问题描述】:
我有如下所示的两个类。当尝试插入两个具有相同IdentityId 的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; }
}
添加代码:
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();
【问题讨论】:
-
你能发布添加代码吗?
-
抱歉,已添加。我预计受影响会返回 2,但它会返回 1。
-
单次插入添加记录会怎样?
-
您在表之间定义了
one-to-one关系。验证是否为IdentityId属性定义了约束。 -
Cristian Szpisjak 是对的......你应该在身份对象(导航属性)中拥有一个 HeroEntry 的集合