一对多关系中的重复条目

时间:2017-06-27 12:03:00

标签: c# entity-framework

我有两种型号,如下所示。

 public class UserModel
{
    [Required]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int ID { get; set; }


    [Display(Name = "User Name")]
    [StringLength(15, MinimumLength = 8, ErrorMessage = "Length Should not be less than 8 characters")]
    [Required]
    public string UserName { get; set; }


    [Display(Name = "QuestionCategory")]
    public virtual ICollection<QuestionCategoryModel> QuestionCategoryModel { get; set; }
}

public class QuestionCategoryModel
{
    [Required]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int ID { get; set; }

    [Required]
    [Display(Name = "Title")]
    [StringLength(15, MinimumLength = 2, ErrorMessage = "Length Should not be less than 2 characters")]
    public string Title { get; set; }

    [Required]
    public virtual UserModel User { get; set; }


    [Required]
    public bool IsDeleted { get; set; } = false;
}

当我尝试将数据插入QuestionCategory时,遇到的问题是。

        _DbInstance.QuestionCategories.Add(category);
        _DbInstance.SaveChanges();

问题是,每次添加QuestionCategories时,尽管数据已存在,但仍会在User中添加新行。有人可以指导我吗?

更新

类别变量将调用Controller,但是,附加User组件从会话中获取值。

        Category.User = (UserModel)Session["User"];
        _QCategories.SaveCategory(Mapper.Map<Degree360.ORM.Dictionary.QuestionCategoryModel>(Category));

1 个答案:

答案 0 :(得分:0)

这里的问题是你没有将用户附加到上下文你的上下文是_DbInstance你可以按照这个链接它将提供更多的信息 Entity Framework Add and Attach and Entity States

我猜你有一个UserModel的DbSet,我将在这里调用 Users 作为我的例子。 所以解决方案就是这样的。

_DbInstance.Users.Attach(category.User)

PS:你必须在SaveChanges()

之前完成