IList数据集插入数据库表

时间:2015-11-13 08:18:22

标签: c# asp.net-mvc entity-framework linq list

我将数据集设置为POST操作方法的模型对象,如下所示

enter image description here

我展开上面的对象后,它具有以下属性

enter image description here

一旦我在 ListProductFields IList之上展开,它就具有以下属性

enter image description here

一旦我展开 ListProductFields IList的对象值,[0]th值,它具有以下属性及其值

enter image description here

这是相关的模型类文件

public class AddNewProduct
{
    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_ProductTypeCategoryField> ListProductFields { get; set; }
}

public partial class AB_ProductTypeCategoryField
{
    public string ProductFieldID { get; set; }
    public string ProductFieldNameEn { get; set; }
    public string ProductFieldNameAr { get; set; }
    public string ProdcutFieldDiscriptionEn { get; set; }
    public string ProductFieldDiscriptionAr { get; set; }
    public string Status { get; set; }
    public bool IsChecked { get; set; }
    public string CreatedBy { get; set; }
    public Nullable<System.DateTime> CreatedDate { get; set; }
    public string UpdatedBy { get; set; }
    public Nullable<System.DateTime> UpdatedDate { get; set; }

    public string Field_Value_EN { get; set; }
    public string Field_Value_AR { get; set; }
}

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; }
}

我有数据库表调用AB_Product_vs_Field,我想插入,

来自最后一张图片的

ProductFieldIDField_IDField_Value_EN

因为这些是19个对象必须插入到AB_Product_vs_Field数据库表中,所以我可能需要使用循环。

所以我创建了以下linq查询以将数据插入到该表

    [HttpPost]
    [ValidateInput(false)]
    public ActionResult Add_Product(AddNewProduct product)
    {
        AB_Product_vs_Field insertproductvalue = new AB_Product_vs_Field();

        if (ModelState.IsValid)
        {
            for (int i = 0; i < product.ListProductFields.Count; i++)
            {
                insertproductvalue.Product_ID = product.Product_ID;
                insertproductvalue.Field_ID = product.ListProductFields[i].ProductFieldID;
                insertproductvalue.Field_Value_EN = product.ListProductFields[i].Field_Value_EN;
            };

            db.AB_Product_vs_Field.Add(insertproductvalue);
            db.SaveChanges();
        }

    }

但我收到了以下错误

  

一个或多个实体的验证失败。有关详细信息,请参阅“EntityValidationErrors”属性。

我将调试点放在我的代码的这一行db.AB_Product_vs_Field.Add(insertproductvalue);前面。这一行调用它指向App_Browsers.9u0xu-_o.0.cs文件中的以下部分

public class ApplicationBrowserCapabilitiesFactory : System.Web.Configuration.BrowserCapabilitiesFactory {

    public override void ConfigureCustomCapabilities(System.Collections.Specialized.NameValueCollection headers, System.Web.HttpBrowserCapabilities browserCaps) {
    }

这是我在这行名为

后得到的错误页面

enter image description here

这些是错误的图像

图片1:

enter image description here

图片2:

enter image description here

1 个答案:

答案 0 :(得分:1)

我在for循环中添加了以下行,然后它可以保留每个元组的记录

@Html.HiddenFor(m => m.ListProductFields[i].ProductFieldID)

然后我的视图页面就像这样

<div class="col-md-10">
    @Html.HiddenFor(m => m.ListProductFields[i].ProductFieldID)
    @Html.TextAreaFor(m => m.ListProductFields[i].Field_Value_EN,
        new { @class = "form-control summernote", @row = 5 })
</div>