C# 一次在同一个表中执行多个insert操作

C# 一次在同一个表中执行多个insert操作,c#,asp.net,xml,performance,informix,C#,Asp.net,Xml,Performance,Informix,我将首先解释我的工作,然后我将说明问题出在哪里 我的应用程序通过(文件上传器)从经过身份验证的用户那里获得一个XML文件,然后我将存储在XML文件中的数据映射(我的意思是迁移)到数据库中的等效数据。 我通过LINQ从XML文件中获取数据 我的第一个问题 每个元素 XML文件具有等效的实体 在我的数据库里。什么是最好的和最好的 更高效的插入方式 一个数据库中有多个记录 具体表格,并保证如果 数据出错,是否回滚整个操作? 是否有一些例子说明如何做 这你对这方面有什么建议吗 验证XML数据 我的第二

我将首先解释我的工作,然后我将说明问题出在哪里

我的应用程序通过(文件上传器)从经过身份验证的用户那里获得一个
XML文件,然后我将存储在XML文件中的数据映射(我的意思是迁移)到数据库中的等效数据。
我通过
LINQ
从XML文件中获取数据

  • 我的第一个问题

    每个元素 XML文件具有等效的实体 在我的数据库里。什么是最好的和最好的 更高效的插入方式 一个数据库中有多个记录 具体表格,并保证如果 数据出错,是否回滚整个操作? 是否有一些例子说明如何做 这你对这方面有什么建议吗 验证XML数据

  • 我的第二个问题:

    在第一个问题中,我谈论 (插入)操作。如果 用户更改XML中的某些数据 然后我想更新我的 使用新数据创建数据库。我该怎么做 这样做?我应该比较一下吗 记录或尝试插入,如果失败, 然后更新这个记录

XML文件中的每个元素都有一个 数据库中的等效实体。什么 是最好的、性能更好的方式 在一个数据库中插入多条记录的步骤 具体表格。如果有,请提供保证 数据有什么问题吗, 请回滚整个操作 如果有一些样本可以这样做,以及 关于验证的任何建议 XML数据

这里的简单答案是:使用事务。事务的要点是为您提供一种机制,通过该机制,您可以执行多个命令,然后将它们作为单个工作单元提交,或者将它们完全回滚,从而使数据库保持一种状态,就好像您的操作从未发生过一样

在第一节中,我讲的是 (插入)操作,如果用户更改 XML文件中的一些数据,然后我想 使用新的 数据。如何对此进行比较。我应该进行比较吗 每一张唱片。如果失败,请尝试插入 然后更新此记录

如果可以很容易地避免的话,try-error-different重试模式是不可取的。您的SQL应该使用一个设计为根据现有数据有条件地插入或更新的语句(例如SQL Server
MERGE
命令;我没有Informix经验,因此无法说明它支持什么,或者
MERGE
是ANSI SQL),或者您应该自己在SQL中执行此条件逻辑

XML文件中的每个元素都有一个 数据库中的等效实体。什么 是最好的、性能更好的方式 在一个数据库中插入多条记录的步骤 具体表格。如果有,请提供保证 数据有什么问题吗, 请回滚整个操作 如果有一些样本可以这样做,以及 关于验证的任何建议 XML数据

这里的简单答案是:使用事务。事务的要点是为您提供一种机制,通过该机制,您可以执行多个命令,然后将它们作为单个工作单元提交,或者将它们完全回滚,从而使数据库保持一种状态,就好像您的操作从未发生过一样

在第一节中,我讲的是 (插入)操作,如果用户更改 XML文件中的一些数据,然后我想 使用新的 数据。如何对此进行比较。我应该进行比较吗 每一张唱片。如果失败,请尝试插入 然后更新此记录


如果可以很容易地避免的话,try-error-different重试模式是不可取的。您的SQL应该使用一个设计为根据现有数据有条件地插入或更新的语句(例如SQL Server
MERGE
命令;我没有Informix经验,因此无法说明它支持什么,或者
MERGE
是ANSI SQL),或者您应该自己在SQL中执行此条件逻辑。

为此使用informix存储过程。 这将允许您包括处理坏数据的异常处理

然后,您可以首先将所有实体加载到临时表中,比如t_work,如果存在数据问题,则删除该表并引发一个excaption

BEGIN -- Start Exception Handling
  ON EXCEPTION SET esql, eisam

  DROP TABLE t_work;
  RAISE EXCEPTION esql, eisam; -- rethrow the exception
  END EXCEPTION

    -- << Your logic here>>
BEGIN--启动异常处理
在异常集esql上,eisam
放下工作台;
引发异常esql,eisam;——重新显示异常
结束例外
-- >

有关更多详细信息,请参见此处:

为此使用informix存储过程。 这将允许您包括处理坏数据的异常处理

然后,您可以首先将所有实体加载到临时表中,比如t_work,如果存在数据问题,则删除该表并引发一个excaption

BEGIN -- Start Exception Handling
  ON EXCEPTION SET esql, eisam

  DROP TABLE t_work;
  RAISE EXCEPTION esql, eisam; -- rethrow the exception
  END EXCEPTION

    -- << Your logic here>>
BEGIN--启动异常处理
在异常集esql上,eisam
放下工作台;
引发异常esql,eisam;——重新显示异常
结束例外
-- >

有关更多详细信息,请参见此处:

为什么否决,如果您不理解问题,我将解释更多我没有否决,但这可能是因为您在此处提出了两个无关的问题。最好把它们分成单独的问题,因为一个问题的答案与另一个问题的答案无关。是的,但我在同一个应用中面临这两个问题,我想解释整个问题。嗯,不要紧,因为你的问题是同一个应用程序的一部分,并不意味着它们实际上是相关的。为什么否决,如果你不理解这个问题,我会解释更多我没有否决,但这可能是因为你问了两个不相关的问题。最好把它们分成单独的问题,因为一个问题的答案与另一个问题的答案无关。是的,但我在同一个应用程序中面对这两个问题,我想解释整个问题。嗯,没关系,因为你的问题是同一个应用程序的一部分