title: getting duplicate operationid when trying to create rest api
body: <p>I have tried for a couple hours to get this fixed, I keep getting the error:
  [Fatal]Error generating client model: Found operation objects with duplicate operationId 'recent_items'. OperationId must be unique among all operations described in the API.</p>
  
  <p>I am using visual studio 2017
  Azure SQL database
  C#</p>
  
  <p>I cannot see any duplicate operationid in the below (I also cannot seem to format it neatly for here -- very sorry!) </p>
  
  <pre><code>{
      "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"
                  }
              }
          }
      }
  }
  </code></pre>
  
  <p>It did have a duplicate get but I changed on of them to a getAll in the controller.  Here is the controller in full:</p>
  
  <pre><code> public class recent_itemsController : ApiController
  {
      private first_choice_itemsEntities db = new first_choice_itemsEntities();
  
      // GET: api/recent_items
      public IQueryable&lt;recent_items&gt; 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 =&gt; e.id == id) &gt; 0;
      }
  }
  </code></pre>