私はウェブサイトを作成しており、メインページに最新のアップデート(最新のコメント、イベントなど)を表示したいと考えています。 これらのエンティティはCreated
DateTime
)。私はこれらの活動からページ可能なリストを得たいと思う。 Id, Comment_Id, Event_Id, ..., Created
:ページ可能リストの最新アクティビティを取得する
は、新たな "結合テーブル" を作成します。
私は3つのソリューションを持っています。 私はGetTheLatestActivities(pageSize, pageIndex)
と言うことができます。このリストを取得すると、ナビゲーションプロパティを使用してエンティティにアクセスできます。このアプローチの問題は、データ冗長性(+1テーブル(および複雑なクエリ))です。階層ごとのテーブルの使用(TPH):すべての「アクティビティ」が1つのテーブルに格納されるため、レコードをフィルタリングできます簡単に。このアプローチの問題私のSQLテーブル方式は非正規化されるだろうし、データの整合性が弱いだろう(なぜならフィールドの継承をサポートするためにnullablesだろう)
GETALLエンティティ(
Comments
、Events
等。)、及びこの連結リストをLINQでフィルタリングしてください(すべてのオブジェクトサポートICreated
インターフェイスなので、OrderBy
日付と使用できるSkip/Take
)。明白な問題はパフォーマンスです、私はすべての要求のデータベースからすべてのレコードを取得し、 "クライアント側"でフィルタリングします。
私は最高のものが最初のものだと思っています。
はありがとう
私は一般的なフィールドだけでなく(基本的には1つしかありません: 'Created')アクセスする必要がありますが、私は" join table "の代わりにビューを使うことができると思います – user838758
私は上記の例を編集してソース表の1つにのみ関連する列を含めることができ、他の表はその列に対してヌルを戻します。 – hatchet