我正在编写一个程序,它从 MySQL 数据库中收集大量单独的数据,并将这些数据序列化为 XML 文档。
我的 XML 文档有五个基本组,每个组包含 3 个子组,我总共收集了大约 100 条数据。
内容本身就是购物网站上的订单详情。我首先运行查询以计算并返回需要发送给客户端的下一个订单 ID,然后使用此订单 ID 从关系数据库中的各种表。
无论我采取哪种方式,这都是一团糟。我最终得到了大量的方法,为我需要的每条数据定义了一个变量,每个变量都等于我拥有的对我的 MySQL 数据库运行查询的方法的返回值。一些数据需要应用额外的逻辑(例如,一些数据需要清理,一些日期需要以某种方式为 XML 格式化)。
几点
- 我没有创建数据库结构或购物网站,我无法更改它
- 我有一个当前正在运行的工作程序。这是我几个月前写的一个程序,我会回去改进
一些示例代码如下:
string valueOne = myMethod("SELECT `valueOne` FROM `tableOne` WHERE `OrderID` = '12345';");
string valueTwo = myMethod("SELECT `valueTwo` FROM `tableOne` WHERE `OrderID` = '12345';");
string valueThree = myMethod("SELECT `valueThree` FROM `tableTwo` WHERE `OrderID` = '12345';");
int valueFour = Convert.ToInt32(myMethod("SELECT `valueFour` FROM `tableThree` WHERE `OrderID` = '12345';"));
string valueFive = myMethod("SELECT `valueFive` FROM `tableThree` WHERE `OrderID` = '12345';");
if(valueFive == "FooBar")
{
//Do Stuff
}
string valueSix = myMethod("SELECT `valueSix` FROM `tableThree` WHERE `OrderID` = '12345';");
DateTime valueSeven = DateTime.Parse(myMethod("SELECT `valueSeven` FROM `tableFour` WHERE `OrderID` = '12345';"));
string valueEight = myMethod("SELECT `valueEight` FROM `tableFive` WHERE `OrderID` = '12345';");
string valueNine = String.Format("QWERTY - {0} - YTREWQ", myMethod("SELECT `valueNine` FROM `tableSix` WHERE `OrderID` = '12345';"));
string valueTen = myMethod("SELECT `valueTen` FROM `tableSeven` WHERE `OrderID` = '12345';");
MyClass fooBar = new MyClass()
{
valueOne = valueOne,
valueTwo = valueTwo,
valueThree = valueThree,
valueFour = valueFour,
valueFive = valueFive,
valueSix = valueSix,
valueSeven = valueSeven,
mySecondClass = new MySecondClass()
{
valueEight = valueEight,
valueNine = valueNine,
myThirdClass = new MyThirdClass() { valueTen = valueTen }
}
};
SerializeToXML<MyClass>(fooBar);
想象一下,但有更多的数据。是的,它可以工作,但它不整洁,难以维护,而且更普遍地说,它不是很好。
所以我的问题是,在 .Net 应用程序中收集大量数据的正确方法是什么?