Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从xml加载数据_C#_Xml_Linq To Sql - Fatal编程技术网

C# 从xml加载数据

C# 从xml加载数据,c#,xml,linq-to-sql,C#,Xml,Linq To Sql,在我的程序中,有两个类,比如说,category和product,其中product的每个对象都引用它所属的类别。从XML加载数据并将其存储在数据库中时,会出现以下问题: 如果我先创建一个category对象并将其存储在数据库中,那么在创建产品失败时会有脏数据(我希望每个xml加载都是事务性的,因此如果用户由于某种错误而失败,数据库将保持与以前一样) 若我首先创建产品,那个么它们将并没有引用(由数据库生成的CategoryID)。我也可以先验证所有产品,但在验证和对象创建过程中会有大量重复的代码

在我的程序中,有两个类,比如说,category和product,其中product的每个对象都引用它所属的类别。从XML加载数据并将其存储在数据库中时,会出现以下问题:

如果我先创建一个category对象并将其存储在数据库中,那么在创建产品失败时会有脏数据(我希望每个xml加载都是事务性的,因此如果用户由于某种错误而失败,数据库将保持与以前一样)

若我首先创建产品,那个么它们将并没有引用(由数据库生成的CategoryID)。我也可以先验证所有产品,但在验证和对象创建过程中会有大量重复的代码。最佳做法是什么

提前谢谢

您应该在数据库中使用,以便在第二次插入失败时回滚第一次插入

在大多数数据库中,可以使用启动事务

START TRANSACTION
如果一切顺利,你就跑

COMMIT
如果某件事失败了,你的跑步

ROLLBACK

所有的数据都返回到您开始事务之前的状态。

但是,我在服务层中这样做,在DAL上,我如何向服务层提供事务呢。谢谢您使用的是什么DAL技术?在大多数情况下,您可以在DAL(例如)中使用事务。您可以添加您正在使用的语言/技术(用于您的服务层/DAL)吗?这将有助于得到更好的答案。好的,谢谢!我使用C#和linq2sql作为DAL。linq-to-sql支持事务。有关示例,请参见。还有一些关于stackoverflow的关于事务和linq2sql的问题,这些问题应该是有用的。@nader,谢谢!我真的很感激!