2009-09-02 36 views
0

私のプログラムには、カテゴリと製品という2つのクラスがあり、製品の各オブジェクトにはそのクラスが属するカテゴリが保持されています。xmlからデータを読み込む

カテゴリオブジェクトを作成してデータベースに格納すると、製品を作成するときにデータが不正になります(それぞれのXMLロードが必要になります)。ユーザーが何らかの誤りで失敗した場合、データベースは以前と同じ状態になります)。

製品を最初に作成した場合、その製品の参照(データベースによって生成されたCategoryID)はありません。私はすべての製品を最初に検証することもできますが、バリデーションとオブジェクト作成には多くのコードが重複しています。ベストプラクティスは何ですか?

ありがとうございます!

+0

(サービスレイヤ/ DALの)使用している言語/技術を追加できますか?それはより良い答えを得るのに役立ちます。 –

+0

さて、ありがとう!私はDALとしてC#とlinq2sqlを使用しています。 – Roy

+0

linq to sqlはトランザクションをサポートしています。例については、http://www.microsoft.com/uk/msdn/nuggets/nugget/206/Transactions-in-LINQ-to-SQL.aspxを参照してください。また、トランザクションとlinq2sqlについてのstackoverflowに関するいくつかの質問が有益であるはずです。 –

答えて

0

データベースにtransactionsを使用して、2番目のエラーが発生した場合に最初の挿入をロールバックできるようにする必要があります。ランニング、

は、ほとんどのデータベースでは、

START TRANSACTION 

との取引を開始することができますし、全部がうまく行けば何かが失敗した場合は、

COMMIT 

を実行

ROLLBACK 

すべてのデータは、トランザクションを開始する前の時点に戻ります。

+0

しかし、私はDALのサービス層でこれをやっています。それでは、どのようにしてサービス層にトランザクションを提供できますか?ありがとう! – Roy

+0

どのようなDALテクノロジーを使用していますか?ほとんどの場合、DALでトランザクションを使用することができます(例:http://www.simple-talk.com/dotnet/.net-framework/.net-2.0-transaction-model/)。 –

関連する問題