.net core savechanges 网络不好情况下,如何防止用户连击重复提交数据?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.net core savechanges 网络不好情况下,如何防止用户连击重复提交数据?相关的知识,希望对你有一定的参考价值。
1、前端提交处理显示遮罩层,如果后台无返回则显示提交中,直到后台返回成功才进行遮罩层的取消2、后台可以进行唯一标识符的判定比如名称是否一样等等来进行重复提交数据的更新或者丢企 参考技术A 判断提交的内容如果和上次一模一样 就禁止提交
尝试使用 .NET Core 执行存储过程时出现“ORA-03115:不支持的网络数据类型或表示”
【中文标题】尝试使用 .NET Core 执行存储过程时出现“ORA-03115:不支持的网络数据类型或表示”【英文标题】:"ORA-03115: unsupported network datatype or representation" when trying to execute stored procedure with .NET Core 【发布时间】:2021-03-03 21:25:45 【问题描述】:我正在使用 Oracle 11g 数据库。当我尝试使用 .NET Core 和 Oracle.ManagedDataAccess.Core
执行存储过程时,我得到了这个异常:
ORA-03115:不支持的网络数据类型或表示”来自源“Oracle Data Provider for .NET, Managed Driver
这是我的 C# 代码:
using (OracleCommand command = new OracleCommand("procedureName", conn))
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add(new OracleParameter("p_system", OracleDbType.Varchar2, "SystemName", ParameterDirection.Input));
command.Parameters.Add(new OracleParameter("p_filename", OracleDbType.Varchar2, "fileName.xml", ParameterDirection.Input));
command.Parameters.Add(new OracleParameter("p_document", OracleDbType.Clob, "document", ParameterDirection.Input));
OracleParameter errorParameter = new OracleParameter("p_error", OracleDbType.Int32, ParameterDirection.Output);
command.Parameters.Add(errorParameter);
command.Parameters.Add(new OracleParameter("p_DumpDebugMsgs", OracleDbType.Boolean, true, ParameterDirection.Input));
command.ExecuteNonQuery();
这是我要执行的存储过程:
procedure procedureName(
p_system IN VARCHAR2,
p_filename IN VARCHAR2,
p_document IN CLOB,
p_error OUT NUMBER,
p_DumpDebugMsgs IN BOOLEAN DEFAULT FALSE
)
任何帮助表示赞赏:)
【问题讨论】:
只是为了检查:您可以尝试您的示例并删除存储过程和 C# 代码中的 CLOB 参数吗?问题可能出在 CLOB 实现上。 为测试创建另一个过程(您可以将null;
放在正文中)。 IE : create or replace procedure procedureNameTest(p_system IN VARCHAR2, p_filename IN VARCHAR2, p_error OUT NUMBER, p_DumpDebugMsgs IN BOOLEAN DEFAULT FALSE ) as BEGIN NULL; END; /
然后你可以放弃它DROP PROCEDURE procedureNameTest;
CLOB 实现似乎不是问题。因为如果我在没有 CLOB 参数的情况下调用存储过程,我也会遇到同样的异常。
好吧,猜错了:(
【参考方案1】:
我解决了我的问题!布尔参数p_DumpDebugMsgs
导致异常。 ODP 似乎不支持here 中描述的布尔参数。
因为参数p_DumpDebugMsgs
有一个默认值,我最终没有为这个参数传递一个值。
【讨论】:
太棒了!请将您的答案标记为未来 SO 用户的“已接受答案”!以上是关于.net core savechanges 网络不好情况下,如何防止用户连击重复提交数据?的主要内容,如果未能解决你的问题,请参考以下文章
.NET Core 2 - EF Core 错误处理 保存更改
如何使用 Net Core 在 DbContext 中获取用户信息
从 ASP.NET Core 2.2 更新 SQL Server 中的上下文
EntityFramework 更新在 SaveChanges / ASP.NET MVC / postbacks 上随机失败