2017-07-19 2 views
1

これを修正するために数時間試しましたが、エラーが続いています: [致命的な]クライアントモデルを生成中にエラーが発生しました:重複した操作ID 'recent_items' OperationIdは、APIに記述されているすべての操作で一意でなければなりません。残りのAPIを作成しようとしたときに操作IDが重複して取得

私は以下の任意の重複operationidを見ることができないのVisual Studio 2017 AzureのSQLデータベース C#の

を使用しています(私もここのためにきちんとそれをフォーマットするように見えることはできません! - 非常に残念)

{ 
    "swagger": "2.0", 
    "info": { 
     "version": "v1", 
     "title": "azure_items_API" 
    }, 
    "host": "azureitemsapi20170719125618.azurewebsites.net", 
    "schemes": ["http"], 
    "paths": { 
     "/api/recent_items": { 
      "get": { 
       "tags": ["recent_items"], 
       "operationId": "recent_items_GetAllrecent_items", 
       "consumes": [], 
       "produces": ["application/json", 
       "text/json", 
       "application/xml", 
       "text/xml"], 
       "responses": { 
        "200": { 
         "description": "OK", 
         "schema": { 
          "type": "array", 
          "items": { 
           "$ref": "#/definitions/recent_items" 
          } 
         } 
        } 
       }, 
       "deprecated": false 
      }, 
      "post": { 
       "tags": ["recent_items"], 
       "operationId": "recent_items_Postrecent_items", 
       "consumes": ["application/json", 
       "text/json", 
       "application/xml", 
       "text/xml", 
       "application/x-www-form-urlencoded"], 
       "produces": ["application/json", 
       "text/json", 
       "application/xml", 
       "text/xml"], 
       "parameters": [{ 
        "name": "recent_items", 
        "in": "body", 
        "required": true, 
        "schema": { 
         "$ref": "#/definitions/recent_items" 
        } 
       }], 
       "responses": { 
        "200": { 
         "description": "OK", 
         "schema": { 
          "$ref": "#/definitions/recent_items" 
         } 
        } 
       }, 
       "deprecated": false 
      } 
     }, 
     "/api/recent_items/{id}": { 
      "get": { 
       "tags": ["recent_items"], 
       "operationId": "recent_items_Getrecent_items", 
       "consumes": [], 
       "produces": ["application/json", 
       "text/json", 
       "application/xml", 
       "text/xml"], 
       "parameters": [{ 
        "name": "id", 
        "in": "path", 
        "required": true, 
        "type": "integer", 
        "format": "int32" 
       }], 
       "responses": { 
        "200": { 
         "description": "OK", 
         "schema": { 
          "$ref": "#/definitions/recent_items" 
         } 
        } 
       }, 
       "deprecated": false 
      }, 
      "put": { 
       "tags": ["recent_items"], 
       "operationId": "recent_items_Putrecent_items", 
       "consumes": ["application/json", 
       "text/json", 
       "application/xml", 
       "text/xml", 
       "application/x-www-form-urlencoded"], 
       "produces": [], 
       "parameters": [{ 
        "name": "id", 
        "in": "path", 
        "required": true, 
        "type": "integer", 
        "format": "int32" 
       }, 
       { 
        "name": "recent_items", 
        "in": "body", 
        "required": true, 
        "schema": { 
         "$ref": "#/definitions/recent_items" 
        } 
       }], 
       "responses": { 
        "204": { 
         "description": "No Content" 
        } 
       }, 
       "deprecated": false 
      }, 
      "delete": { 
       "tags": ["recent_items"], 
       "operationId": "recent_items_Deleterecent_items", 
       "consumes": [], 
       "produces": ["application/json", 
       "text/json", 
       "application/xml", 
       "text/xml"], 
       "parameters": [{ 
        "name": "id", 
        "in": "path", 
        "required": true, 
        "type": "integer", 
        "format": "int32" 
       }], 
       "responses": { 
        "200": { 
         "description": "OK", 
         "schema": { 
          "$ref": "#/definitions/recent_items" 
         } 
        } 
       }, 
       "deprecated": false 
      } 
     } 
    }, 
    "definitions": { 
     "recent_items": { 
      "type": "object", 
      "properties": { 
       "id": { 
        "format": "int32", 
        "type": "integer" 
       }, 
       "item_number": { 
        "type": "string" 
       }, 
       "stop_name": { 
        "type": "string" 
       }, 
       "stop_address1": { 
        "type": "string" 
       } 
      } 
     } 
    } 
} 

重複取得がありましたが、コントローラのgetAllに変更されました。ここで、コントローラがいっぱいである:

public class recent_itemsController : ApiController 
{ 
    private first_choice_itemsEntities db = new first_choice_itemsEntities(); 

    // GET: api/recent_items 
    public IQueryable<recent_items> GetAllrecent_items() 
    { 
     return db.recent_items; 
    } 

    // GET: api/recent_items/5 
    [ResponseType(typeof(recent_items))] 
    public IHttpActionResult Getrecent_items(int id) 
    { 
     recent_items recent_items = db.recent_items.Find(id); 
     if (recent_items == null) 
     { 
      return NotFound(); 
     } 

     return Ok(recent_items); 
    } 

    // PUT: api/recent_items/5 
    [ResponseType(typeof(void))] 
    public IHttpActionResult Putrecent_items(int id, recent_items recent_items) 
    { 
     if (!ModelState.IsValid) 
     { 
      return BadRequest(ModelState); 
     } 

     if (id != recent_items.id) 
     { 
      return BadRequest(); 
     } 

     db.Entry(recent_items).State = EntityState.Modified; 

     try 
     { 
      db.SaveChanges(); 
     } 
     catch (DbUpdateConcurrencyException) 
     { 
      if (!recent_itemsExists(id)) 
      { 
       return NotFound(); 
      } 
      else 
      { 
       throw; 
      } 
     } 

     return StatusCode(HttpStatusCode.NoContent); 
    } 

    // POST: api/recent_items 
    [ResponseType(typeof(recent_items))] 
    public IHttpActionResult Postrecent_items(recent_items recent_items) 
    { 
     if (!ModelState.IsValid) 
     { 
      return BadRequest(ModelState); 
     } 

     db.recent_items.Add(recent_items); 
     db.SaveChanges(); 

     return CreatedAtRoute("DefaultApi", new { id = recent_items.id }, recent_items); 
    } 

    // DELETE: api/recent_items/5 
    [ResponseType(typeof(recent_items))] 
    public IHttpActionResult Deleterecent_items(int id) 
    { 
     recent_items recent_items = db.recent_items.Find(id); 
     if (recent_items == null) 
     { 
      return NotFound(); 
     } 

     db.recent_items.Remove(recent_items); 
     db.SaveChanges(); 

     return Ok(recent_items); 
    } 

    protected override void Dispose(bool disposing) 
    { 
     if (disposing) 
     { 
      db.Dispose(); 
     } 
     base.Dispose(disposing); 
    } 

    private bool recent_itemsExists(int id) 
    { 
     return db.recent_items.Count(e => e.id == id) > 0; 
    } 
} 

答えて

2

私は最終的に戻って、私のモデルとコントローラにすべてのアンダースコア「_」を削除する必要がありました。

データベース表の名前とフィールドを削除して、適切な対策を講じました。必要かどうかわかりません。

これは非常にイライラしており、良い午後の大部分を無駄にしています。

これは他の人に役立つことを願っています。

関連する問題