2017-11-18 4 views
1

特定のIDを持つサイトを含むすべてのカテゴリのリストを取得しようとしています。以下は、少し修正した足場生成法です。Guidを比較すると例外が発生する

System.ArgumentException: Expression of type 'System.Nullable`1[System.Guid]' cannot be used for parameter of type 'System.Guid' of method 'Boolean Equals(System.Guid)' 

エンティティは非常に単純です:

public class Category 
    { 
     public Guid Id { get; set; } 
     public string Name { get; set; } 
     public string Description { get; set; } 

     public Site Site { get; set; } 
    } 

    public class Site 
    { 
     public Guid Id { get; set; } 
     public string Name { get; set; } 
     public string Description { get; set; } 

     public ICollection<Category> Categories { get; set; } 
    } 

私が間違ってやって何ができるか私はこれを実行すると

 [HttpGet("Categories/{id}")] 
     public async Task<IActionResult> GetCategoriesSite([FromRoute] Guid id) 
     { 
      if (!ModelState.IsValid) 
      { 
       return BadRequest(ModelState); 
      } 

      // This line throws the error 
      var categories = await _context.Categories.Where(o => o.Site.Id.Equals(id)).ToListAsync(); 

      if (categories == null) 
      { 
       return NotFound(); 
      } 

      return Ok(categories); 
     } 

は、残念ながら、それは次のようなエラーがスローされますか?

+0

はあなたがGetCategoriesSiteメソッドにGUIDを渡すために使用しているコードを表示することができます。エラーはあなたがGuidを渡していないように聞こえ、それはヌル値です。 – Darthchai

+0

postmanからのGET呼び出しhttp:// localhost:8080/api/Categories/32f770d6-ce84-4325-42ea-08d529984e6d – Aeseir

+0

例外の原因となっているのは、どの回線ですか? – Darthchai

答えて

3

EFコアのバグのようですが、issueをgithubにチェックしてください。オペレータは私のためにうまく働いた==Equals()の交換で対応策:

var categories = await _context.Categories.Where(o => o.Site.Id == id).ToListAsync(); 
+0

甘いjehovas証人はそれでした。私はそれが私がした何かばかだと思って私は血まみれの私の髪を引っ張った。 – Aeseir

関連する問題