抱歉,我是初学者。
我有两个类:用户和组链接在一起(组类有一个用户类型属性)
这是 User.cs :
public class User
{
[Key]
public int userId { get; set; }
[Required]
[MaxLength(10)]
[Display(Name="Firstname")]
public string firstname { get; set; }
[Required]
[MaxLength(10)]
[Display(Name = "Lastname")]
public string lastname { get; set; }
}
这是 Group.cs :
public class Group
{
[Key]
public int idGroup { get; set; }
public string name { get; set; }
public User owner { get; set; }
}
这里是插入
private myContext db = new myContext();
[HttpPost]
public ActionResult Create(Group group)
{
group.owner = (User)Session["user"];
if (ModelState.IsValid)
{
db.Groups.Add(group);
db.SaveChanges();
return RedirectToAction("Index","Home");
}
return View(group);
}
//Session["user"] contains an User type object (which is already in database)
问题是:当我添加一个新组时,它会自动将一个新用户插入到数据库中,而不是仅仅插入相应的组。
示例:我是“user1”(因此“user1”存在于 User 表中)并且我想创建“group1”组。 我将我所在的用户与组类的“所有者”属性相关联。
group1 将被插入到 Group 表中,但 user1 也将被插入到 User 表中。这将导致重复内容
我不知道如何避免这种情况......
如有任何帮助,我们将不胜感激。
最佳答案
您必须使用 Attach
将现有的 User
附加到您的 DbContext
实例.这将阻止 EF 创建对象的副本。
关于c# - EntityFramework ORM 错误插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13417400/