2014-12-24 60 views
0

我正在用Entity Framework 6構建一個web api 2 API。一切都很順利,因爲很多api調用都是直接連接到一個表並返回該對象作爲JSON。返回一個由各種模型構建的對象,web api,EntityFramework 6

現在我的頭痛來了,試圖從各種模型構建一個單一的對象。我首先使用代碼。

我想返回對象的簡化版本是這樣的

{ Name : Brand.Name, CategoryScores : [{CategoryId : 'x', Score : 'x'}]} 

這是我目前的模型

[Table("Brands")] 
public class BrandModel 
{ 

    [Key] 
    public string BrandId { get; set; } 
    public string BrandName { get; set; } 
} 

[Table("CategoryScores")] 
public class CategoryScoresModel 
{ 

    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public Guid Id { get; set; } 
    public string BrandId { get; set; } 
    public string TraqCategoryScore { get; set; }} 

public class TraqIndexDTO 
{ 
    public string BrandName { get; set; } 
    public IEnumerable<CategoryScoresDTO> CategoryScores { get; set; } 

} 

public class CategoryScoresDTO 
{ 
    public string CategoryId { get; set; } 
    public string TraqCategoryScore { get; set; } 
} 

控制器在這裏的邏輯將被移出一旦其工作

private AuthContext db = new AuthContext(); 

public IHttpActionResult Get() 
    { 
     //var results = this.repository.SelectAll(); 
     return Ok(GetTraqIndex()); 
    } 
public IEnumerable<TraqIndexDTO> GetTraqIndex() 
    { 
     var traqIndex = from b in db.Brand 
         select new TraqIndexDTO() 
         { 
          BrandName = b.BrandName, 
          CategoryScores = getCatgoryScoresByBrandId(b.BrandId) 
         }; 

     return traqIndex; 
    } 

public IEnumerable<CategoryScoresModelDTO>getCatgoryScoresByBrandId(string brandId) 
    { 
     var scores = from s in db.CategoryScoresModel 
        where s.BrandId == brandId 
        select new CategoryScoresDTO() { 
         CategoryId = s.CategoryId, 
         TraqCategoryScore = s.TraqCategoryScore 
        }; 

     return scores; 
    } 

目前我收到此錯誤「getCategoryScoresByBrandId(System.Strin G)」的方法,而這種方法不能被翻譯成店表達‘’

任何幫助和指導,或一個很好的榜樣,將不勝感激

感謝羅布

回答

1

修改GetTraqIndex:

public IEnumerable<TraqIndexDTO> GetTraqIndex() 
{ 
    var traqIndex = db.Brand.ToList().Select(b => new TraqIndexDTO() 
        { 
         BrandName = b.BrandName, 
         CategoryScores = getCatgoryScoresByBrandId(b.BrandId).ToList() 
        }).ToList(); 

    return traqIndex; 
} 
+0

謝謝,但名優產品和類別分數現在都不在目前情況下 –

+0

那好吧存在很多欣賞的幫助,但現在我在目前情況下 –

+0

買這個getCatgoryScoresByBrandId(b.BrandId)爲不可用orry我的錯誤類型;) –

相關問題