私はサブクラスがVideo
、Image
、Note
、およびForm
の4つのサブクラスを持っています。それぞれに異なるタイプのデータが含まれています。たとえば、Image
クラスには、ディスクおよびイメージプロパティのイメージファイルへのパスが含まれ、Form
クラスにはフォームフィールド値が含まれます。各項目間の共通要素は、しかし、GPS座標との見出しであるので、私は、次の抽象基本クラスを持っている:データベースの抽象基本クラスとサブクラスをモデル化します
public abstract class Content
{
public float? Latitude { get; set; }
public float? Longitude { get; set; }
public float? Heading { get; set; }
}
しかし、私はかすんで取得する場所のデータベースでこれをモデル化する方法です。現在、Events
というテーブルがあります(例として、イベントは誕生日パーティーとしましょう)と4つのテーブル(Videos
、Images
、Notes
、およびForms
)があります。各テーブルには、Events
の主キーにリンクする外部キーがあります。
LINQ-to-SQLを使用して、各テーブルに5つのクラスがあります。たとえば、Event.Images
のような1種類のデータだけが必要な場合はこれで問題ありませんが、私がしたいのはEvent
の「内容」の総数を数えてGPS座標を取得することです。私はちょうどEvent.Images.Count() + Event.Videos.Count() + ...
を使用するだけで十分に簡単に数えることができますが、私はGPS座標について同じことをすることはできません。データベースをモデル化して、すべてのアイテムに基本クラスを使用できるようにする方法はありますか?また、データを表示する必要があるときに個々の強く型付けされたアイテムを取得できるようにする方法はありますか?
感謝。彼らはモデルの使い方を正確に説明していませんが、それは私にもっと研究をする出発点です。個人的には、新しいサブクラスを追加するとデータの新しい列を追加する必要があり、それが望ましくないサイズになることがあるという意味で、単一の表モデルは悪い考えです。小規模のアプリケーションでは、私はそれを使用するメリットを見ることができます。 –
確かに、明確なトレードオフがあります。それは単に新しいタイプを追加する可能性に依存します。もしそうでない場合は、複数のテーブルを走査して1つのテーブルを使用することを避ける方がよいかもしれません。可能であれば、他のパターンの1つ。そして、はい、それらのリンクはあなたが本を買うことを望んでいるのでかなり疎です:-)それは良い本です - 私は考える価値があります。 – SingleShot