获取一个实体的ID并将其存储为Entity Framework中另一个实体的属性

时间:2018-02-01 20:57:02

标签: c# .net entity-framework

我有一个名为Family的表。在将新记录插入此表之前,我想搜索其父记录的ID,以便插入新记录的一部分。有什么方法可以做到这一点。

E.g。如果我的表看起来像

ID Name ParentID  
1  mark  -1  
2  eden  -1  
3  abbot  2

用户输入“kyle abbot”,我想搜索abbot的ID为3并将新记录存储为“4 Kyle 3”,其中3表示父母的ID。

有没有办法使用Entity Framework做到这一点?

1 个答案:

答案 0 :(得分:0)

您可以使用LINQ查询EF上下文并检查父项是否存在。我从你的问题中假设用户条目包含名字和姓氏。

        var userEntry = "Kyle Abbot";

        var namePair = userEntry.Split();

        using (var ctx = new FamilyContext())
        {
            var parent = ctx.families.
                                FirstOrDefault(x => x.Name.Equals(namePair[1],
                                StringComparison.InvariantCultureIgnoreCase));

            var parentId = parent?.Id ?? -1;

            ctx.Add(new Family
            {
                Name = namePair[0],
                ParentId = parentId
            });

            ctx.SaveChanges();
        }

如果为主键的实体类属性添加属性,则不需要自己生成主键来执行插入操作,否则在创建新实体对象时需要另外生成主键插入。

      [System.ComponentModel.DataAnnotations.Schema.DatabaseGenerated(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Identity)]