我有两种型号,如下所示。
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));
答案 0 :(得分:0)
这里的问题是你没有将用户附加到上下文你的上下文是_DbInstance你可以按照这个链接它将提供更多的信息 Entity Framework Add and Attach and Entity States
我猜你有一个UserModel的DbSet,我将在这里调用 Users 作为我的例子。 所以解决方案就是这样的。
_DbInstance.Users.Attach(category.User)
PS:你必须在SaveChanges()