我想一次更新表格中的少数记录。
所以我有下面的表格
每Field_Value_EN
个Field_Value_AR
和Product_ID
加载30个编辑器
如下所示
这些是相关的模型类
AB_Product_vs_Field模型类
public partial class AB_Product_vs_Field
{
public string Product_ID { get; set; }
public string Field_ID { get; set; }
public string Field_Value_EN { get; set; }
public string Field_Value_AR { get; set; }
}
ProductEdit模型类
public class ProductEdit
{
public string Product_ID { get; set; }
public string ProductTypeID { get; set; }
public string ProductCategoryID { get; set; }
public string Subsidary_ID { get; set; }
public string Field_ID { get; set; }
public string ProductFieldNameEn { get; set; }
public string ProductFieldNameAr { get; set; }
public string ApprovalStatus { get; set; }
public string Status { get; set; }
public IList<AB_Product_vs_Field> ListProductFields { get; set; }
public IList<AB_ProductTypeCategoryField> ListProductLables { get; set; }
}
提交详细信息后,我想更新所有相关的行AB_Product_vs_Field
表。
例如:假设我更新 Product_ID = 10 记录,它应该更新所有相关的行 Product_ID = 10
所以我创建了这样的linq查询
[HttpPost]
[ValidateInput(false)]
public ActionResult Product_Edit(ProductEdit product)
{
AB_Product_vs_Field insertproductvalue = new AB_Product_vs_Field();
var user = db.AspNetUsers.Find(User.Identity.GetUserId());
if (ModelState.IsValid)
{
var listInsertproductvalue = new List<AB_Product_vs_Field>();
for (int i = 0; i < product.ListProductFields.Count; i++)
{
listInsertproductvalue.Add(new AB_Product_vs_Field
{
Product_ID = product.Product_ID,
Field_ID = product.ListProductFields[i].Field_ID,
Field_Value_EN = product.ListProductFields[i].Field_Value_EN,
Field_Value_AR = product.ListProductFields[i].Field_Value_AR
});
};
db.Entry(listInsertproductvalue).State = System.Data.Entity.EntityState.Modified;
db.SaveChanges();
但是我在db.Entry(listInsertproductvalue).State = System.Data.Entity.EntityState.Modified;
行
实体类型List`1不是当前模型的一部分 上下文。
修改
然后我改变了这样的LINQ查询
AB_Product_vs_Field insertproductvalue = new AB_Product_vs_Field();
if (ModelState.IsValid)
{
for (int i = 0; i < product.ListProductFields.Count; i++)
{
insertproductvalue.Field_ID = product.Product_ID;
insertproductvalue.Product_ID = product.ListProductFields[i].Field_ID;
insertproductvalue.Field_Value_EN = product.ListProductFields[i].Field_Value_EN;
insertproductvalue.Field_Value_AR = product.ListProductFields[i].Field_Value_AR;
};
db.Entry(insertproductvalue).State = System.Data.Entity.EntityState.Modified;
db.SaveChanges();
但随后出现以下错误
存储更新,插入或删除语句会影响意外 行数(0)。自那以后,实体可能已被修改或删除 实体已加载。
答案 0 :(得分:0)
尝试更新圈内的实体:
[HttpPost]
[ValidateInput(false)]
public ActionResult Product_Edit(ProductEdit product)
{
var user = db.AspNetUsers.Find(User.Identity.GetUserId());
if (ModelState.IsValid)
{
for (int i = 0; i < product.ListProductFields.Count; i++)
{
var insertproductvalue = new AB_Product_vs_Field
{
Product_ID = product.Product_ID,
Field_ID = product.ListProductFields[i].Field_ID,
Field_Value_EN = product.ListProductFields[i].Field_Value_EN,
Field_Value_AR = product.ListProductFields[i].Field_Value_AR
});
// Attach and set to modified
db.Entry(insertproductvalue).State = System.Data.Entity.EntityState.Modified;
};
db.SaveChanges();