私は窓の電話7アプリケーションを開発しています。私はアプリケーションのデータベースとしてXMLを使用しています。私は自分のアプリケーションにデータベーステーブルの代わりにXMLファイルを使用しています。私は私のXMLファイルの一つのために次の構造を持っています。私はXMLにLINQを使用して、私のモバイルアプリケーションのユーザー・インターフェースを介してCATEGORY_NAME & TransactionType_IDの値を挿入しています上記のXMLファイルでLINQ to XMLを使用して最初のレコードのXMLファイルにIDを書き込む方法は?
<?xml version="1.0" encoding="utf-8" ?>
<Categories>
<Category>
<Category_ID></Category_ID>
<Category_Name></Category_Name>
<TransactionType_ID></TransactionType_ID>
</Category>
<Category>
<Category_ID></Category_ID>
<Category_Name></Category_Name>
<TransactionType_ID></TransactionType_ID>
</Category>
</Categories>
。上記のXMLファイルでは、Category_IDをプライマリキー& TransactionType_IDを他のXMLファイルに属する外部キーとして扱っています。上記のXMLファイルでは、データベースのテーブルのように、ノードCategory_IDのオートインクリメントIDを生成したいと考えています。この目的のために私は次のコード
private int new_record_id()
{
IsolatedStorageFile isstore = IsolatedStorageFile.GetUserStoreForApplication();
IsolatedStorageFileStream bookfile = new IsolatedStorageFileStream("Categories.xml", System.IO.FileMode.Open, isstore);
XDocument xmldetails = XDocument.Load(bookfile);
var details = (from detail in xmldetails.Descendants("Category")
select (int.Parse(detail.Element("Category_ID").Value))).Max();
bookfile.Close();
return details + 1;
}
を使用しています。しかし、私はXMLファイル内の最初のレコードを挿入するときに先頭に私のXMLファイル内のレコードがないので、それは、次の文でエラーが発生します。
var details = (from detail in xmldetails.Descendants("Category")
select (int.Parse(detail.Element("Category_ID").Value))).Max();
XMLファイルに最初のレコードを挿入するためのコードやリンク、または任意の解決方法を教えてください。私が何か悪いことをしているなら、私を案内してください。あなたはがあなたのXMLに何冊が存在しない場合に対処できるようにしたい場合、私は、
今var id = xmlDetails.Descendants("book")
.Max(x => (int) x.Element("id"));
:クエリで開始する