错误"调用SaveChanges()"方法 [英] Error in " SaveChanges() " method
问题描述
我创建使用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屋!