皆さんの疑問に、勝手に答えます。 by 中博俊(大阪) 先に読まないで!!
DB Q.O/Rマッピング DotNetでDBアクセスを考えた場合O/Rマッピング手法を使った方が良いか、ADO.NET自体をO/Rマッピングされた物として考えて使った方が良いか、迷っています。 私的には、O/Rマッピング用のクラスを用意して、基本的なDBへのアクセスはO/Rマッピングクラスを通した方が開発効率とメンテナンスは向上すると思っています。どうでしょうか?
DB A.O/RはOOとしては理想的ですよね 理想的というのはえてして大変なものです。 ADO.NET 2.0では最強の道具であるTableAdapterとデータバインドがあります。 これらを使わないでやっていく価値があるかどうかの見極めをしませんか? O/Rのデメリットはデータストアの軽視です。SQL Serverなどに対して単純なSelect文だけで本当にシステムは作成できますか? 本当にデータベースサーバは差し替え可能なのでしょうか?トランザクション、ロック様々な面で設計思想が違います。 パフォーマンスは出せますか? オブジェクト側の構造変更と、DBの構造変更をうまく調停できますか? 見極めを行うべきポイントはかなりのポイントです。 よく検討する必要があると思います。
A.えムナウさんと、囚人さんのセッションで・・・ DB Q. .NET+SQLServer 仕事柄、業務系アプリでの.NET+SQLServerの 実装方法でベストプラクティスみたいなのがあれば、取り上げていただけると、とてもうれしいです。 ちょっと欲張りでしょうか.... A.えムナウさんと、囚人さんのセッションで・・・ おそらく語られたようにTableAdapter+ストアドプロシージャによる実装と、トランザクションをストアド内で管理するのが一番簡単です。 とくにロックがかかってしまうトランザクションは1秒でも速く完結させるべきで、出来るだけSQLサーバ内で解決させてしまいましょう。
Q. Viewやストアドの管理は大変です A.大変ですね DB Q. Viewやストアドの管理は大変です 最近サーバー上のVIEWやストアドを、技術的に便利な方法で構成管理(履歴などを)する方法はないものかと模索中です。勉強会でそのようなネタがあれば幸いです。 A.大変ですね 300や500のストアドの管理は大変です。 命名法だけでの管理しかないので何とかならないものかと私も思います。
Q. 接続文字列を動的に変更したい A. それしかなさそうです。 DB Q. 接続文字列を動的に変更したい 型付TableApdaperを使用する際で、接続先が動的に変更しなければならない場合は、どうするのがベストかを聞きたいです。 今は、TableAdapterクラス毎にPartialクラスを定義して接続文字列を変更できるようにして、configファイル内の複数の接続文字列をそのつど設定しています・・・かなりの手間がかかっています・・・・ A. それしかなさそうです。 TableAdapterはそのままでデータアクセス層として公開すべきでない局面が多いです。
DB public static スレッド一件取得Row GetData(int スレッドID) { ~~~~入力チェックを行う~~~~~ using (スレッド一件取得TableAdapter ta = new スレッド一件取得TableAdapter()) ~~~~コネクションを差し替える~~~~~ using (データセット.スレッド一件取得DataTable table = ta.GetData(スレッドID, ユーザID)) if (table.Rows.Count > 0) return (データセット.スレッド一件取得Row)table.Rows[0]; } else return null;
ストアドプロシージャの場合無条件にnullも受け入れてしまうためにint?などになってしまう。 DB ストアドプロシージャの場合無条件にnullも受け入れてしまうためにint?などになってしまう。 自前のパラメータならintにするだけ 1行しか取得しない場合にはDataRowを取得したい 先ほどのように抜き出せばOK List<T>に詰め替えて取得したい コネクションを切り替えたい this._connection.ConnectionString = global::ConsoleApplication1. Properties.Settings.Default.bbs_testConnectionString; ストアドプロシージャの戻り値を取得したい int? ret = (int?)com.Parameters["@RETURN_VALUE"].Value; →積極的にpartialを使いましょう。
オープンソース Q. どんなオープンソースが? Javaで業務システムを構築する際、オープンソースなフレームワークを組み合わせることが多いのですが、.NETではどんなオープンソースがよく使われているのか興味ありますね。ネット上の情報もJavaに較べて少なめな気がするので、実際に利用したことがある人のお話などありましたらぜひ聴いてみたいです。
A. log4netやNunitやEnterprise Librareyとかが有名でしょうか オープンソース A. log4netやNunitやEnterprise Librareyとかが有名でしょうか おそらくJava + apache + tomcat + JSP + struts + ant + log4jとか、hibernateやらSeasar2だとかを想定されているのでしょうが、それらに比べると確かに影は薄いかもしれません。 ただそれらが無いとプログラムがほとんど組めない環境と、.NETでは標準装備されているため必要性が高くないという違いが有るでしょう。 謹製中心と、オープンソース中心と特徴があっていいんじゃないでしょうか。
Q.C# の Generics で、できること。 言語 Q.C# の Generics で、できること。 C++ と C# の Generics(Template)の違いにより、どのような誤差が生じるか? C# でタイプリスト等の実現は不可能か?(typedef) A. GenericsとTemplateは根本的に違う技術です。 Templateは巨大なソース生成機構として、Genericsはタイプセーフなジェネリックプログラムとして。 事実STL/CLRというSTLをCLR上で実現するプロジェクトもOrcas向けに動いていますし、C++/CLIではTemplateがそのまま利用することが可能です。 誤差ではなくありのままを受け入れませんか?
Q.C# の今後 A.C#はC#, VBはVB・・・ 言語 C# は今後どの程度の勢いで普及していくか? VB(VB.NET) に取ってかわってくるか? A.C#はC#, VBはVB・・・ .NETの普及は進んでいくでしょう。 そのv1.x時代には私も含むC系を得意とする技術者が先導している感じがありましたが、今後はVBも巻き返しそうです。 事実掲示板などでもVBの話題が増えているように感じます。 案件としてはVBをメインとして、共通部品をC#やC++でといった利用が増えるような気もします。 ASPがVBSであったので、ASP.NETではVBという感じはしますね。