2016-01-12 41 views
1

我想從我的用戶表中獲取信息與用戶的ID,但我的控制器返回所有與外鍵連接到其他表的導航屬性。Web Api 2與實體框架控制器返回所有導航屬性

代碼很簡單的WebAPI方法:

[ResponseType(typeof(User))] 
    public IHttpActionResult GetUser(int id) 
    { 
     User user = db.User.Find(id); 
     if (user == null) 
     { 
      return NotFound(); 
     } 

     return Ok(user); 
    } 

它不會只返回用戶,它會返回與該用戶相關的所有導航屬性。

如何僅返回用戶?

This post解釋選定的屬性。我想要所有的屬性,但控制器也會將所有連接的表數據與外鍵一起返回給我。

+0

嗯,查找不應該加載導航屬性。你是說FKs是填充的還是導航屬性? http://stackoverflow.com/questions/5764391/entity-framework-find-method-not-working-properly –

+0

@SteveGreene謝謝,我找到了解決方案。 –

+0

可能重複的[實體框架 - 只加載選定的屬性](http://stackoverflow.com/questions/8076239/entity-framework-load-only-selected-properties) –

回答

2

Web應用程序的最佳實踐是禁用DbContext中的LazyLoadin

context.Configuration.LazyLoadingEnabled = false; 
+0

所以你不同意@FabioLuz,他說它的工作原理,但它不是解決方案。 –

+1

實際上,返回包含所需數據的特定視圖模型總是更好。但是,如果它很龐大,並且您想要增加這種複雜性或者它很簡單,並且您只想與您的實體一起使用,那麼它始終取決於您的項目。 –

+0

@TuğrulEmreAtalayabi如果您覺得有用,請接受我的回答;) –