2017-06-04 14 views
0

私は、Entity Framework CodeFirstアプローチを使用してASP.NET Web APIを構築しました。作成したデータベーステーブルは、期待どおりのリレーショナルデータベースを表しています。私のAPIのGET操作では、3つのテーブルから値を返す必要があります。私が見た例の多くは、次のような単純な戻り値を示しています。Entity Frameworkを使用したASP.NET APIでのGET操作

// GET: api/Books 
public IQueryable<Book> GetBooks() 
{ 
    return db.Books; 
} 

Booksオブジェクトのフィールドだけが返されます。私はAuthorとBookTypeへの外部キーを持っているので、これはあまり役に立ちません。 Entity FrameworkとWeb APIの使用複数のテーブルからフィールドの値を返す方法は、通常どのように行われますか?私はlinqクエリを使用してテーブルを結合し、結果を返すことができると思います。それはこれを行う最も効率的な方法ですか、より良い方法がありますか?

おかげ

答えて

1

あなたの最善の策は、あなたのUIに戻り、その後、(通常はAutoMapperのようなツールを使用して)自分のデータベース・エンティティからそれを埋めるために必要なすべてのデータを組み込んでViewModelには、作成することです。

データベースエンティティではなくViewModelを返します。つまり、機密情報が公開されるのを防ぐだけでなく、電線を通じて送信されるデータを最適化して簡素化することができます。ここで

は、これが達成されるかもしれない方法の例です:脇モデル側面から http://bengtbe.com/blog/2009/04/14/using-automapper-to-map-view-models-in-asp-net-mvc/

、私もまた、あなたのコントローラのアクションであなたのDBのコンテキストに直接アクセス回避しようと、むしろ抽象的なことをお勧めしたいですリポジトリへのデータアクセス(およびサービスが複雑になる場合)

+0

チップをありがとう。それは助けになるはずです。 – Rich

関連する問題