barteloma
barteloma

Reputation: 6865

Using guid id in Entity Framework Web Api and DbContext Find not working

I have a class that has Guid id.

public class Product { 
    public Guid Id {get;set;}
}

and I am using this context in my web api application.

public class ProductController : ApiController
{
        readonly ProductContext database = new ProductContext();

        public IHttpActionResult Get(string id){
              database.find(id); // does not find.
        }
}

if I change action parameter as guid it finds.

        public IHttpActionResult Get(Guid id){
              database.find(id); // finds.
        }

But if a user sends invalid id parameter, applicaiton throws exception.

The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Guid' for method 'System.Web.Http.IHttpActionResult Get(System.Guid)

Should I make all of id properties as string? Which way is best?

Upvotes: 0

Views: 2358

Answers (2)

Chamith Saranga
Chamith Saranga

Reputation: 40

cast string to Guid.

 public class ProductController : ApiController
    {
            readonly ProductContext database = new ProductContext();

            public IHttpActionResult Get(string id){

                  database.find(new Guid(id)); 
            }
    }

Upvotes: 0

dana
dana

Reputation: 18135

You could try to use a Guid?

public IHttpActionResult Get(Guid? id)
{
    if (id.HasValue)
    {
        database.find(id.Value); // finds.
    }
    else
    {
        // invalid ID
    }
}

Upvotes: 2

Related Questions