質問: .NET FrameworkのDB操作について以下のアクセス方法があるかと思います。 ADO.NET SqlClient ADO.NET DataSet EntityFramework Dapper SqlClientを良く業務で使ってましたが、sqlcommandbuilderを使えば更新系クエリ(Insert、Update、Delete)を書かなくてもクエリを自動生成してくれるので、開発が楽になる印象です。パフォーマンスが良くないと一部サイトでは書かれていたりしますが、私はさほどパフォーマンスが悪いとは思えません。10万件以下のテキスト取り込みも3分もかからなかった記憶があります。(定かではないです。) 次にDataSetですが、これは使った事がありません。 EntityFrameworkは最近使いましたが、更新系クエリを自前で書かなければならず(自分が使いこなせていないだけかもです。)パフォーマンスもあまり良くありませんでした。※くどいようですが、全てを知ってるわけではないので、使い方が悪い等あればご指摘いただきたく。。。 最後にDapperも使った事がありません。 この4つの中で何が良いのかが、いまいち決めかねています。というのも自分が全てを完璧に理解できているわけではないからです。 何を重視するのかにもよりますが、パフォーマンスが一番で次に開発コストかと思います。やはりパフォーマンスが悪ければ使いづらいシステムの烙印を押されてしまいます。 長くなりましたが、DB操作には何を使用するのがベストでしょうか。それぞれのメリット、デメリットも添えてご回答いただけますと幸いです。
回答: 私もあまり詳しくありません。 SqlCommandBuilderは、SELECT文から更新系を作るものだと思っておりますが、必ず更新系のSQL文を作れるとは限らないと思いました。 DataSetといいますか、DataTableはSQLCommandとかと一緒に使うものです。 EntityFrameworkはデータベースのテーブルの構造を見て、型付けされたカスタムのDataAdapterを作ってくれたと思いました。片付けされているので、実行時までエラーがわからないというより、コーディングの段階でエラーがわかることがあります。 Dapperは初耳でわかりません。 更新系のSQL文の場合、自作のSQL文でないとクエリパラメータをきちんと指定できないというイメージがあり、そこからセキュリティが甘くなるというイメージがあります。 ですので、基本的には更新系は自分で書くものであると思っています。