【问题标题】:IList dataset insert to database tableIList 数据集插入到数据库表
【发布时间】:2015-11-13 08:18:21
【问题描述】:

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

一旦我展开上面的对象,它就有以下属性

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

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

这是相关的模型类文件

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,我想插入,

ProductFieldID ,Field_ID , Field_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) {
    }

这是我在调用此行后得到的错误页面

这些是错误的图像

图片1:

图 2:

【问题讨论】:

  • 查看 'EntityValidationErrors' 属性了解更多详情 - 我们看不到 :)
  • @StephenMuecke 问题已更新,在哪里可以看到EntityValidationErrors,?
  • @HenkHolterman 其实我无法通知EntityValidationErrors,我应该在哪里看?
  • @StephenMuecke 我添加了更多图片,但我不明白这里有什么问题
  • @HenkHolterman 我需要为此添加 try catch 吗?

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


【解决方案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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-12
    • 2017-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-27
    • 2018-03-25
    • 2012-11-11
    相关资源
    最近更新 更多