私は Database First EF5 で最初のステップを実行しており、EF5 ORM パラダイムでクラシックからの知識を再現しようとしていますが、行き詰まっています:DataTable
DataAdapter
私はよく と を使って作業し、それらDataGridsViews
をTrees
で埋めていましたStored Procedures
。表示に使用する情報は、複数のテーブル/エンティティに対応しています。
例えばブログアプリだとします。次のような投稿、ユーザーなど:
テーブル:
Post {Id, Subject, Body, Date, Author}
User {Id, Name, Email, Pwd}
そして、すべてのテーブルを結合し、いくつかの値を計算するために、 がありStoredProcedure
ます。この SP はPost
、User
テーブルと 2 つのランタイム計算値から属性を返します。
Post.Subject, Post.Body, Post.Categories, User.Name, DaysSincePublished, IsAuthorOnline
または、簡単にするために:
Post.*, User.*, DaysSincePublished, IsAuthorOnline
質問:
- 以前のレコード セットを一度に複数のエンティティに適合させることは可能ですか (
Post
およびUser
)? そして、それを DataGridView で埋めますか? - オンザフライで作成されたエンティティに適合させることは可能ですか? その場合、DataGridView から更新 (バインド) することは可能ですか。
- 私は問題に対して間違ったアプローチをしていますか?
Context.ObjectContext.Translate<TEntity>()
orのようなメソッドを試しContext.Database.SqlQuery<TEntity>(storedProcedure, parameterArray);
ましたが、一度に 1 つのエンティティしか返されません。
注:
この例では、 を忘れてクエリStoredProcedure
を作成することができます。linq
しかし、実際のシナリオでは、10 を超えるテーブルとサブクエリを使用するクエリがあり、FK を使用しない場合が数回あります...そしてサーバーのパフォーマンスを気にするストアド プロシージャは必須です。