错误"调用SaveChanges()"方法 [英] Error in " SaveChanges() " method

查看:623
本文介绍了错误"调用SaveChanges()"方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建使用Oracle数据库和ASP.net MVC4的应用程序。尽管这似乎是在code没有问题,调用的SaveChanges()方法将导致如下所示的错误:

该图像显示内部异常和相关细节

这是我为节约做修改实施

 如果(ModelState.IsValid)
{
    ModelState.Clear();    使用(SSP_Entities数据库=新SSP_Entities())
    {
          database.REQUEST_TAB.Add(c_modal.Request_tab);
          database.SaveChanges();
          caseID = c_modal.Request_tab.CASE_ID;
          返回RedirectToAction(NewEnv,CPE);
     }
  }

我用下面的code视图

 <%:Html.HiddenFor(型号=> model.request_tab.ROWVERSION,新{@值=日期})%GT;
    <%:Html.HiddenFor(型号=> model.request_tab.CASE_ID,新{@值= 100})%GT;
    <%:Html.HiddenFor(型号=> model.request_tab.REQUEST_BY,新{@值=PUSNLK})%GT;
    <%:Html.HiddenFor(型号=> model.request_tab.REQUEST_ID,新{@值= 334})%GT;
    <%:Html.HiddenFor(型号=> model.request_tab.REQUEST_TYPE,新{@值=CPE})%GT;
    <%:Html.HiddenFor(型号=> model.request_tab.STATE,新{@值=贴})%GT;
    <%:Html.HiddenFor(型号=> model.request_tab.COMMENTS,新{@值=CPE订单})%GT;

这是我使用的模型

 命名空间CPEASPX.Models
{
    使用系统;
    使用System.Collections.Generic;    公共部分类REQUEST_TAB
    {
        公共小数REQUEST_ID {搞定;组; }
        公共字符串REQUEST_BY {搞定;组; }
        公共小数CASE_ID {搞定;组; }
        公共字符串状态{搞定;组; }
        公共字符串REQUEST_TYPE {搞定;组; }
        公共字符串ROWVERSION {搞定;组; }
        公共字符串评论{搞定;组; }
    }
}

我试过别的地方出现了一些解决方案。首先,我改变了<&的appSettings GT; 的web.config 文件中加入

 <添加键=ASPNET:MaxHttpCollectionKeysVALUE =5000/>
<添加键=ASPNET:MaxJsonDeserializerMembersVALUE =5000/>
<添加键=ASPNET:MaxHttpCollectionKeysVALUE =10000/>

行到它。但问题仍然存在。我找不到客户端和服务器数据类型之间的不匹配。

请帮我理清问题。

下面IM传递两个模型的单一视图。我创建了以下组合模型的(c_model是这个类的一个对象)

 使用系统;
使用System.Collections.Generic;
使用System.Linq的;
使用的System.Web;命名空间CPEASPX.Models
{
    公共类CombineModal
    {
        公共REQUEST_TAB request_tab =新REQUEST_TAB();        公共REQUEST_TAB Request_tab
        {
        {返回request_tab; }
        集合{request_tab =价值; }
        }
        公共CPE CPE =新CPE();        公共CPE CPE
        {
            {返回CPE; }
            集合{CPE =价值; }
        }
    }
}

在这里说我通过CPE模式,但我只传递相结合的模式,其中包含在其CPE模式和Request_tab模式。

这是我在视图中使用继承模式类code

 <%@页标题=LANGUAGE =C#的MasterPageFile =〜/查看/共享/的Site.Master继承=System.Web.Mvc.ViewPage< CPEASPX.Models.CombineModal>中%GT;


解决方案

我想你需要给每个属性分配,而不是添加整个班级。

 使用(SSP_Entities数据库=新SSP_Entities())
{
    VAR requestTab =新RequestTab
    {
        REQUEST_ID = c_modal.Request_tab.REQUEST_ID,
        REQUEST_BY = c_modal.Request_tab.REQUEST_BY,
        CASE_ID = c_modal.Request_tab.CASE_ID,
        STATE = c_modal.Request_tab.STATE,
        REQUEST_TYPE = c_modal.Request_tab.REQUEST_TYPE,
        ROWVERSION = c_modal.Request_tab.ROWVERSION,
        评论= c_modal.Request_tab.COMMENTS
    };    database.REQUEST_TAB.Add(requestTab);
    database.SaveChanges();
}

I'm creating an application using an Oracle database and ASP.net MVC4. Even though it seems like no problems in the code, calling the SaveChanges() method causes an error shown here:

This image shows the inner exception and related details

This is the implementation that I have done for saving changes

if (ModelState.IsValid)
{
    ModelState.Clear();

    using (SSP_Entities database = new SSP_Entities())
    {
          database.REQUEST_TAB.Add(c_modal.Request_tab);
          database.SaveChanges();
          caseID = c_modal.Request_tab.CASE_ID;
          return RedirectToAction("NewEnv", cpe);
     }
  }

I use following code in the view

    <%:Html.HiddenFor(model => model.request_tab.ROWVERSION, new { @Value="date"}) %>
    <%:Html.HiddenFor(model => model.request_tab.CASE_ID, new { @Value=100}) %>
    <%:Html.HiddenFor(model => model.request_tab.REQUEST_BY, new { @Value="PUSNLK"}) %>
    <%:Html.HiddenFor(model => model.request_tab.REQUEST_ID, new { @Value=334}) %>
    <%:Html.HiddenFor(model => model.request_tab.REQUEST_TYPE, new { @Value="CPE"}) %>
    <%:Html.HiddenFor(model => model.request_tab.STATE, new { @Value="POSTED"}) %>
    <%:Html.HiddenFor(model => model.request_tab.COMMENTS, new { @Value="CPE Order"}) %>

This is the model that I'm using

namespace CPEASPX.Models
{
    using System;
    using System.Collections.Generic;

    public partial class REQUEST_TAB
    {
        public decimal REQUEST_ID { get; set; }
        public string REQUEST_BY { get; set; }
        public decimal CASE_ID { get; set; }
        public string STATE { get; set; }
        public string REQUEST_TYPE { get; set; }
        public string ROWVERSION { get; set; }
        public string COMMENTS { get; set; }
    }
}

I tried a few solutions shown elsewhere. First I changed the <appSettings> in web.config file by adding

<add key="aspnet:MaxHttpCollectionKeys" value="5000" />
<add key="aspnet:MaxJsonDeserializerMembers" value="5000" />
<add key="aspnet:MaxHttpCollectionKeys" value="10000" />

lines to it. But the problem continues. I cannot find any mismatch between client and server data types.

Please help me to sort out the problem.

Here im passing two models to a single view. i created following combined model for that(c_model is an object of this class)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace CPEASPX.Models
{
    public class CombineModal
    {
        public REQUEST_TAB request_tab = new REQUEST_TAB();

        public REQUEST_TAB Request_tab
        {
        get { return request_tab; }
        set { request_tab = value; }
        }


        public CPE cpe = new CPE();

        public CPE Cpe
        {
            get { return cpe; }
            set { cpe = value; }
        }
    }
}

here it says i'm passing CPE model to it but i'm only passing combined model which contains CPE modal and Request_tab modal in it.

this is the code that i use in the view to inherit the modal class

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<CPEASPX.Models.CombineModal>" %>

解决方案

I think you need to assign each property instead of add whole class.

using (SSP_Entities database = new SSP_Entities())
{
    var requestTab = new RequestTab
    {
        REQUEST_ID = c_modal.Request_tab.REQUEST_ID,
        REQUEST_BY = c_modal.Request_tab.REQUEST_BY,
        CASE_ID = c_modal.Request_tab.CASE_ID,
        STATE = c_modal.Request_tab.STATE,
        REQUEST_TYPE = c_modal.Request_tab.REQUEST_TYPE,
        ROWVERSION = c_modal.Request_tab.ROWVERSION,
        COMMENTS = c_modal.Request_tab.COMMENTS
    };

    database.REQUEST_TAB.Add(requestTab);
    database.SaveChanges();
}

这篇关于错误&QUOT;调用SaveChanges()&QUOT;方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆