用实体框架添加新数据

本文关键字:数据 新数据 实体 框架 添加 | 更新日期: 2023-09-27 18:10:52

我试图添加新的数据到我的数据库,这是我的代码:

// This is the dbContext
private BugTrackerDBContainer db = new BugTrackerDBContainer();
//The objet with its properties
public static Developper devAdded = new Developper();
devAdded.Name = txb_name.Text;
devAdded.FirstName = txb_firtname.Text;
// Add to the database
db.AddToDevelopper(devAdded);
db.SaveChanges();

我的问题是,如果我启动它一次,它工作正常,但两次我有这个错误:

一个实体对象不能被多个IEntityChangeTracker实例引用。

为什么?

谢谢你的帮助

用实体框架添加新数据

这些函数和变量的混合声明是什么?
您试图将相同的静态实例对象两次添加到同一个DataContext,它将失败。

    不要声明静态变量。这很糟糕。不要将Context声明为一个字段。使用using blocks作为局部变量。不要把对文本框等UI元素的访问和对数据库的操作混在一起。

示例:

public void AddDevelopperButton_Click(object sender, EventArgs e)
{
    this.AddDevelopper(txb_name.Text, txb_firtname.Text);
}
public Developper AddDevelopper(string name, string firstName)
{
    Developper devAdded = new Developper();
    devAdded.Name = name;
    devAdded.FirstName = firstName;
    using(BugTrackerDBContainer db = new BugTrackerDBContainer())
    {
        db.AddToDevelopper(devAdded);
        db.SaveChanges();
    }
    return devAdded;
}

您不应该将数据库实体作为静态对象。问题很可能出在这一行:

public static Developper devAdded = new Developper();

将代码更改为@Scorpi0推荐的代码

我的建议是:

A:学习基本编程

声明static的可能原因:

public static Developper devAdded = new Developper();

B:然后开始研究EF和其他框架。