質問: C# 初心者です。 DBでテーブルを良く扱うことがあると思うのですが テーブルを素敵に管理できるクラス化+namespaceで整理したいです。 DB名をnamespace?にして 接続先(クラス名) テーブル名(クラス名) ・日本語名項目 (フィールド名) (フィールドデータ) ・実際のDBの項目(フィールド名 英語など)(フィールドデータ) ・データ型(フィールドデータ) ・長さ(フィールドデータ) 等があると思うんですけど... 初心者なので発想力がこれくらいしかなく... それよりもおすすめのクラス化とかありましたら教えてください。 おすすめのサイト等ございましたら教えてください。
回答: 汎用なオブジェクトにアクセサつけてるわけじゃないですから テーブル名.フィールド名.型 の「型」なんてのは必要なくなるんです。 それでこそクラスにしてる意味があるってもんです。 Personテーブルがあったら Personクラスがあり ``` Person { public string Name { get; set; } public string Kana { get; set; } public Sex Sex { get; set; } public DateTime DateOfBirth { get; set; } } ``` Personクラスの型情報を見て、適切に保存したり、読みだしたりするわけです。 ``` person.Name = "山田 花子"; person.Kana = "ヤマダ ハナコ"; // ... これをそのまま保存できるし、DBから読み出すこともできる ``` こういう技術をO/Rマッピングといいます。 EntityFrameworkは壮大過ぎるので難しいでしょう。 簡単なのはDapperです。 Dapperを導入した場合こうなります。 ``` using (var connection = /*IDbConnection生成*/) { // クエリは今まで通り普通に文字列で書けば良い var people = connection.Query("SELECT * FROM person"); foreach (var person in people) { Console.WriteLine($"名前{person.Name} 誕生日:{person.DateOfBirth:yyyy/MM/dd}"); } } ```