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