2017-06-04 71 views
0

我使用實體框架CodeFirst方法構建了ASP.NET Web API。它創建的數據庫表按照我的預期表示一個關係數據庫。在我的API的GET操作中,我想從3個表中返回值。我見過的很多例子只顯示這樣一個簡單的迴歸:使用實體框架在ASP.NET API中執行GET操作

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

其中只返回Books對象的字段。這不會非常有用,因爲我擁有Author和BookType的外鍵。使用Entity Framework和Web API,通常如何返回來自多個表的字段值?我想我可以使用linq查詢來連接表並返回結果。這是最有效的方法嗎?還是有更好的方法?

感謝

回答

1

你最好的選擇是創建一個視圖模型,它包含了所有你需要返回到你的用戶界面,然後填充,從你的數據庫實體(通常使用像AutoMapper工具)中的數據。

然後,您返回ViewModel而不是數據庫實體,這意味着您可以優化和簡化通過線路發送的數據,並防止可能泄露敏感信息。

這裏有一個如何這可能完成一個例子: http://bengtbe.com/blog/2009/04/14/using-automapper-to-map-view-models-in-asp-net-mvc/

除了模型方面,我還建議你也儘量避免直接訪問你的控制器操作你的數據庫上下文,而不是抽象的數據訪問到存儲庫(和服務,如果事情開始變得複雜)。

+0

感謝您的提示。這應該是有幫助的。 – Rich