Oracle データベースからカスタム ビジネス オブジェクトのリストへの何百万ものレコードのデータ取得を最適化する方法が必要です。Oracle から返されるデータは XML 形式であり、ビジネス オブジェクトのリストにシリアル化する方法が必要です。
私が書いたコードは正常に動作していますが、XML をメモリにロードしている間、特にコードが次の行にヒットしたときに、実行に時間がかかります。
var xDoc = XDocument.Load(xmlReader);
コード :
//Custom Business object
public class AccountType
{
public int AccountTypeID { get; set; }
public string AccountCode { get; set; }
public string BookType { get; set; }
public int Status { get; set; }
}
//Code that retrieves data from Oracle DB
using (OracleConnection objOracleConnection = new OracleConnection(strConnectionString))
{
using (OracleCommand orclCmd = objOracleConnection.CreateCommand())
{
try
{
orclCmd.CommandText = strXMLSQL;
orclCmd.BindByName = true;
orclCmd.XmlCommandType = OracleXmlCommandType.Query;
orclCmd.XmlQueryProperties.RootTag = "AccountData";
orclCmd.XmlQueryProperties.RowTag = "ROW";
objOracleConnection.Open();
XmlReader xmlReader = orclCmd.ExecuteXmlReader();
var xDoc = XDocument.Load(xmlReader);
List<AccountType> accountTypes = (from data in xDoc.Root.Elements("ROW")
select new AccountType
{
AccountTypeID = data.GetIntXMLElementValue("ACCOUNTTYPEID"),
AccountCode = data.GetStringXMLElementValue("ACCOUNTCODE"),
BookType = data.GetStringXMLElementValue("BOOKTYPE"),
Status = data.GetIntXMLElementValue("STATUS")
}).ToList();
}
catch (OracleException oracleEx)
{
throw oracleEx;
}
catch (Exception generalEx)
{
throw generalEx;
}
finally
{
objOracleConnection.Close();
}
}
どんな助けでも大歓迎です。
ありがとう!