2009-05-04 5 views
2

LinqToXSDを使用してXMLファイルを解析しています。私はXMLのLinqを使ってデータベースの対応するテーブルに要素を挿入しています。Linq to SQL、特定のテーブル/クラスがDataContextのチェンジセットにあるかどうかをチェックする方法

私はテーブルが約75の異なるテーブルのいずれかの可能性があり

DB.<tables>.InsertOnSubmit(table); 

を使用してDataContextの中に多くの異なるテーブル/要素を挿入しています。

XMLは重複しています。XMLの特定の要素が既にDataContextのチェンジセットに追加されているかどうかを確認したいと思います。

これを行う一般的な方法はありますか?私が今やっているやり方は、いろいろなテーブルのそれぞれにコードを書くことです。何らかの方法でメソッドを抽出してこのコードを一度書くことができると思います。

XMLを解析するには、xmlの各要素に対して、データベースのテーブルに対応するメソッドがあります。次の2つのメソッドは、それぞれ異なるタイプのXML要素を処理します。

private static tbl_trackname ParseTrackName(TRACKNAMEType tRACKNAMEType) 
    { 
     tbl_trackname tableTrackName = new tbl_trackname(); 

     tableTrackName.code = tRACKNAMEType.code; 
     tableTrackName.text = tRACKNAMEType.text; 

     DB.tbl_tracknames.InsertOnSubmit(tableTrackName); 
     return tableTrackName; 
    } 



private static tbl_track ParseTrack(TRACKType tRACKType) 
    { 
     tbl_track tableTrack = new tbl_track(); 

     tableTrack.trackID = int.Parse(tRACKType.trackid); 
     tableTrack.tbl_organisation = ParseOrganisation(tRACKType.organisation); 
     tableTrack.tbl_trackname = ParseTrackName(tRACKType.trackname); 
     tableTrack.tbl_nation = ParseNation(tRACKType.country); 

     DB.tbl_tracks.InsertOnSubmit(tableTrack); 
     return tableTrack; 
    } 

最初のメソッドは、tbl_tracknameという名前のテーブルに行を挿入し、2番目のメソッドは、tbl_trackという名前のテーブルに行を挿入します。

欠落しているコードは、トラックまたはトラック名がすでにデータコンテキストに挿入されている場合に、データコンテキストをチェックするコードです。私はまた、データベース内に既に存在するかどうかをチェックする必要がありますが、コードの行だけであるため、すべてのParseXXX()メソッドでそれを実行することができます。

答えて

2

まあ、おそらくdataContext.GetChangeSet().Inserts.OfType<Foo>()で何かできますか?最後にAnyまたはContainsの何かがありますか?

さらに多くの例がありますか?

+0

私は元の質問を編集し、さらにいくつかの情報を追加しました。 –

関連する問題