オブジェクトとクラスを操作するときにデータベースからデータを格納および取得する際に、最良のコード設計が何であるかを知りたいと思います。クラス内のデータベースからデータを格納/取得するときのベストプラクティス
これは2通りの方法で実行できます。
私はデータベースにクエリを行い、クラス内のインスタンス変数にすべての情報を格納し、getters/setterで取得します。このようにして、私はいつも必要な情報を得ることができますが、多くの場合、すべての情報を常に必要とすることはありません。
public class Group {
public int GroupID { get; private set; }
public string Name { get; private set; }
public Group(int groupID)
{
this.GroupID = groupID;
this.Name = // retrieve data from database
}
public string getName()
{
// this is just an example method, I know I can retrieve the name from the getter :)
return Name;
}
}
他の方法は、いくつかのメソッドを作成し、パラメータとしてグループIDを渡し、その後、私が必要とする特定の情報をデータベースに照会することです。これはより多くの質問につながるかもしれませんが、私は必要な情報だけを取得します。
public class Group {
public Group()
{
}
public string getName(int groupID)
{
// query database for the name based on groupID
return name;
}
}
あなたはどのような方法を検討するのですか?ここで一緒に行くのがベストプラクティスですか、それとも私が思うものが最高ですか?
私はこの権利があるかどうかを見てみましょう。私はむしろ、メソッドのデータベースを照会する必要があります、グループの新しいインスタンスを作成するGetGroup()と言うことができます。 Groupコンストラクタは、すべてのデータをパラメータとして取り込み、インスタンス変数に格納します。これで、GetGroup()は、そのグループオブジェクトにすべての自分のデータが格納された状態でそれを返すことができます。私はそれを得たか? :) – aelveborn
そうだと思います。 GetGroups()メソッドがあるとします(もっと興味深い)。それはデータベースを照会し、2行を取得します。次に、2つのGroupオブジェクトを作成し、カラムからデータを設定し、グループオブジェクトの配列を返します。 – bryanmac
Hmmですが、ORMを使用するとLINQ to SQLのようになります。オブジェクトにカスタムクラスを使用してスキップし、LINQを使用してオブジェクトを作成することはできますか?以前はORMを見ていませんでしたが、チュートリアルをたくさん見ています;) – aelveborn