抱歉,我是初学者。
我有两个类:链接在一起的用户和组(组类具有用户类型属性)
这是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”组。 我将我的用户链接到Group类的“owner”属性。
group1将被插入到Group表中,但user1也将被插入到User表中..这将导致重复的内容
我不知道如何避免这种情况......
任何帮助都将不胜感激。
答案 0 :(得分:0)
试试这个,假设Group
可以有多个User
。
using (DbEntities ctx = new DbEntities())
{
// Create new Group
Group g = new Group() { name = "Some name", };
//Create new User 1
User u1 = new User() { firstname = "user 1", };
//Create new User 2
User u2 = new User() { firstname = "user 2", };
// Add users to the Group
g.owner.Add(u1);
g.owner.Add(u2);
//Updating the context
ctx.AddToGroup(g);
//Save to Database
ctx.SaveChanges();
}
答案 1 :(得分:0)
您必须使用Attach
将现有的User
附加到DbContext
个实例。这将阻止EF创建对象的副本。