【发布时间】:2011-07-25 22:11:27
【问题描述】:
我想问你一个我遇到的问题。我使用 ASP.NET 作为接口,使用 db4o 作为数据库。我有这个类结构:
- Prj(Class)(Eqp 是 Prj 的一个属性)
- ...Eqp(Class)(Eqp的属性就是这两个:)
- ..EqpSpec(类)
- ..工作(属性)
- ...Eqp(Class)(Eqp的属性就是这两个:)
我的代码在下面,我不明白为什么在我存储它之后,EqpSpec 中的对象增加了。
如果我在关闭程序并重新打开它后有一个“a”对象,我会从下拉列表中得到两个。 (我从下拉列表(ddlEqp)中选择 EqpSpecName,我之前在其中存储了对象,然后将 Job 写入 TxtJob,我首先将它存储到 AddEqp 中的数组中。然后我从会话中取出它并将其存储到数据库中在 Update_Click 中。)
/* I use this method to add */
protected void AddEqp_Click(object sender, EventArgs e)
{
// ...
EqpSpec objEqpS = new EqpSpec();
objEqpS.EqpName = ddlEqp.SelectedValue;
objEq.EqpSpec = (EqpSpec)db.Next(objEqpS);
objEq.Job = Convert.ToInt32(TxtJob.Text);
listEqp.Add(objEq);
Session["listEqp"] = listEqp;
}
/* I use this method for both update and store */
protected void Update_Click(object sender, EventArgs e)
{
DatabaseConnection db = new DatabaseConnection();
ArrayList listEqp = (ArrayList)Session["listEqp"];
Prj objPrj= new Prj();
objPrj.PrjName = ddlPrj.SelectedValue;
objPrj = (Prj)db.Next(objPrj);
Eqp[] arrayEqp = new Eqp[listEqp.Count];
for (int i = 0; i < listEqp.Count; i++)
arrayEqp = (Eqp)listEqp;
objPrj.Eqp = arrayEqp;
db.Update(objPrj);
}
重复的原因是什么,如何避免?
【问题讨论】: