用实体框架添加新数据
本文关键字:数据 新数据 实体 框架 添加 | 更新日期: 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和其他框架。