c# - EntityFramework ORM 错误插入

标签 c# asp.net-mvc orm asp.net-mvc-4

抱歉,我是初学者。

我有两个类:用户和组链接在一起(组类有一个用户类型属性)

这是 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/

相关文章:

c# - 序列化 WPF DataTemplates 和 {Binding Expressions}(来自 PowerShell?)

c# - 用于 netTcp 的绑定(bind)的 maxConnections 的最大大小

c# - 获取不带url参数的MVC路由路径

php - Laravel Eloquent 5.1 高效更新相关模型

c# - 通过 C# 更新 Azure AD 应用程序

c# - 从上传的多个文件中获取文件名

asp.net-mvc - 如何覆盖 HTML 帮助器方法用于模型属性的字符串表示形式?

asp.net-mvc - ASP.NET MVC : relationship between models and MembershipUsers

orm - SQLJ为什么死了?

android - 注释 greenDao 生成的对象