在实体框架中添加子记录时如何避免创建父记录?

ske*_*ske 3 c# entity-framework entity-framework-4

数据库中有 2 张表,一张是 [PARENTS],另一张是 [CHILDREN] - 有 ParentId 作为外键。

所以父母和孩子之间的关系是一对多的。

问题是当我尝试创建一个新的 CHILDREN 记录时,它也会创建一个新的 PARENT 记录。

怎么解决呢?谢谢

在此输入图像描述

  public void Add(Model.Pages.PageGroup entity)
        {
            using (var ctx = new SmartDbContext())
            {
                var dbEntity = entity.ToEntity();
                ctx.PageGroups.Add(dbEntity);
                ctx.SaveChanges();
            }
        }

    namespace SmartECM.Repository.EF
    {
    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;
    using System.ComponentModel.DataAnnotations.Schema;
    using System.Data.Entity.Spatial;

    public partial class PageGroup
    {
        public PageGroup()
        {
            Pages = new HashSet<Page>();
        }

        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public Guid GroupId { get; set; }

        [Required]
        [StringLength(100)]
        public string GroupName { get; set; }

        public Guid ProjectId { get; set; }

        [DatabaseGenerated(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Computed)]
        public DateTime? DateAdded { get; set; }
        [DatabaseGenerated(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Computed)]
        public DateTime? DateUpdated { get; set; }

        public virtual Project Project { get; set; }

        public virtual ICollection<Page> Pages { get; set; }
    }
}


    namespace SmartECM.Repository.EF
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;
    using System.ComponentModel.DataAnnotations.Schema;
    using System.Data.Entity.Spatial;

    public partial class Project
    {
        public Project()
        {
            PageGroups = new HashSet<PageGroup>();
        }

        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public Guid ProjectId { get; set; }

        [Required]
        [StringLength(100)]
        public string ProjectName { get; set; }

        public string ProjectDescription { get; set; }

        public Guid? Owner { get; set; }

        [DatabaseGenerated(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Computed)]
        public DateTime? DateAdded { get; set; }

        [DatabaseGenerated(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Computed)]
        public DateTime? DateUpdated { get; set; }

        public virtual ICollection<PageGroup> PageGroups { get; set; }
    }
}
Run Code Online (Sandbox Code Playgroud)

ske*_*ske 5

感谢大家!!!

我从此链接Entity Framework - Duplicate Parent(one) when create new child(many)得到了正确的答案

我猜它应该附加父级以便 EF 可以检测到它。

在此输入图像描述