2010-12-14 11 views
1

私は窓の電話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")); 

:クエリで開始する

答えて

1

まあ、単にはるかに書き込むことができます明示的に最初の「Dテスト:

int id; 
if (xmlDetails.Descendants("book").Any()) 
{ 
    id = xmlDetails.Descendants("book") 
        .Max(x => (int) x.Element("id")); 
} 
else 
{ 
    id = -1; // Or whatever you want to do 
} 

(あなたも、望んでいた場合は、このための条件演算子を使用することができます。)

関連する問題