我只是为了更新与类别表和产品表相关的表而感到疯狂......但是我在这方面取得了成功......
我有这些表
product product_id
product_name
product_description
product_price
product_image
category category_id
catgory_name
category_desc
我这样做是为了更新表....使用实体框架......
private void btnSave_Click(object sender, EventArgs e)
{
if (lblHiddenmode.Text == "Edit")
{
using (var dbcontext = new TsgEntities())
{
pictureBox1.Enabled = true;
pictureBox1.Visible = true;
Image image = pictureBox1.Image;
byte[] bit = null;
bit = imageToByteArray(image);
product1 pd = new product1();
string category = cbcategorytypes.Text;
string categorydesc = tbCategoryDescription.Text;
var c = new category { category_Name = category, category_Description = categorydesc };
pd.product_Name = tbProductName.Text;
decimal price = Convert.ToDecimal(tbProductPrice.Text);
pd.product_Price = price;
pd.product_Description = tbProductdescription.Text;
pd.product_Image = bit;
pd.category = c;
dbcontext.SaveChanges();
this.Close();
}
}
}
注意:我正在更新产品名称,其中product_id为4,category_id = 4
但它会在此声明中显示 pd.category = c; 我得到product_id =“0”和category_id =“0”
在使用类别表更新表时我做错了..更新语句是否有任何问题
答案 0 :(得分:2)
上面的代码将生成插入,而不是更新。要执行更新,首先需要从上下文中检索product1
实例。
我不知道你的上下文是什么样的,所以我不能发布确切的代码,但它会是这样的:
product1 pd = dbcontext.protucts.Where(p => p.productid == 4
&& p.categoryid == 4).First();
然后,您可以进行更改并致电dbcontext.SaveChanges()
并更新您的记录。
答案 1 :(得分:1)
您实际上并未将对象添加到上下文中。
您需要执行以下操作:
dbcontext.products.AddObject(pd1);