2017-05-18 21 views
0

複数のDataTableを取得するストアドプロシージャまたは単一のDataSetを取得するストアドプロシージャを複数呼び出して使用する方がよいですか?データセットに関する既知の問題がありますか

DataSetを使用する際に既知の問題とバグがあり、コードを読み込めなくし、DataTableとストアドプロシージャを複数回呼び出す方が一般的に良いことが伝えられています。

オンラインでの検索私は、DataSetに問題があることを文書化した問題やバグを見つけられず、広く使われていることも学びました。

+1

経験豊富な同僚に特定のドキュメントを尋ねてください。そうすれば、これらの問題を正しく解決できます。彼はおそらく避けて、あなたに煙を吹きかけて、被験者を変えるでしょう。彼は完全に無関係であると判明した記事または2つの記事を送ったり、彼の主張と直接矛盾したりするかもしれません。彼があなたに何か具体的かつ関連性のあるものを与えていない限り(そして彼はそうかもしれません!)、彼は愚か者であり、あなたは丁重に彼が何を言わなければならないのか聞いて、それを無視するべきです。好奇心の外に、この男は不変の不思議な心配をしていますか? –

+1

@EdPlunkett私はこの同僚を尊敬しています。特に彼は私の上司ですから、私は彼に名前を呼ばないよう丁寧にお願いします。 DataSetの使い方がとても一般的なので、なぜ私たちはそれを使うべきではないのですか?それはおそらく個人的な好みとコードスタイルの問題です。 –

+0

シニアの同僚に泥を投げないように願っています。下のCDoveには、私のものよりも見た目の面白い方法があります。しかし結論はあなたの疑いが正しいことです:男はあなたに真実ではないことを教えています。あなたが職場でクラスを使用することを禁じられている場合、しないでください。彼らはあなたの小切手に署名します。しかしここであなた自身の判断を疑うことはありません。 –

答えて

6

ああ。私は前にこのようなことに遭遇しました。あなたの同僚があなたに語ったことを私に翻訳させてください。

DataSetを使用する際の既知の問題とバグがあり、コードを読み取ることができなくなり、一般にDataTableとストアドプロキシの複数の呼び出しを使用する方が良いことがわかります。ここでは、より上級開発者として

手段

、私はそれらを効果的に使用する方法を知っているのに十分なデータセットを働いていません。私は、彼らが新品であったときに人々が言っ​​たことを覚えていますが、私は新しいトリックを学ぶことのない老犬です。

残念ですが、私が今働いているところで、ここでWeb開発者だった人は、Lambda式を読むことができなかったので、Linqが「あまりにも新しい」と「バグ満載」であることを私に納得させました。私は彼にC#暗黙のプロパティフィールドを示したとき、彼の心を吹き飛ばした。

コードを正しく使用してコードにコメントしている場合は、DataSetsは判読不能またはバグがありません。ストアドプロシージャコールのあるDataTablesも有効ですが、DataSetは基本的にステロイドのDataTablesのコレクションです。おそらく、ストアドプロシージャまたはまっすぐにLINQをSQLに埋め込むことになります。しかし、どのデータベースでも、「アプリケーションやサーバーのパフォーマンスやネットワーク接続のパフォーマンスに影響を与えずに、データベースコールの回数を最小限にして、どのように最大限の作業を行うことができますか」という問題が発生します。その答えは、データ収集方法を推進するはずです。

+0

あなたの翻訳のための最高です。 –

1

私がDataSetsで目撃した1つの問題は、サービスコール(.NET Remoting、WCF、従来のWebサービスはこれまで見てきた例です)のシグネチャの一部として使用されるときです。

これは、応答時間を犠牲にするDataSetのペイロードが大きいためです。

もう1つの理由は、過去にマイクロソフトがDataSetsを.NETのあるバージョンから別のバージョンに下位互換性を持たせたとは限りません。したがって、アプリケーションを.NET 4.0で開発していて、呼び出すサービスが.NET 1.1で実行されている場合は、 DataSetをサービスに渡して、.NET 1.1DataSetを受け入れると、互換性の問題が発生する可能性があります。

+0

.Net 1.1サービスが.Net 'DataSet'を受け入れることができない場合、問題はあなたが' DataSet'を使用したことではなく、それはあなたがまだ20年以上も前の技術から作られたサービスを持っていることです。 – CDove

+0

それ以外に、あなたがここで言ったことのいくつかは不正確です(.Net 1.1との互換性を高めるDataTableなど)。ソース:http://stackoverflow.com/questions/2250/datatable-vs-dataset、https://social.msdn.microsoft.com/Forums/en-US/47c62835-6187-4251-8d44-f9b8dca3406b/dataset- vs-datatable-performance?forum = netfx64bit、https://msdn.microsoft.com/en-us/library/ss7fbaez.aspx – CDove

+0

通信するエンドポイントを常に制御することはできません。ポイント。元の投稿のポイントは、「DataSets」の既知の問題に関するもので、自分の経験を指摘しました。私はまた、私が言ったことには不正確ではない。私はまた、.NET 1.1とのより大きな互換性を提供する 'DataTables 'について何も言わなかった。 –

関連する問題