I am using Web API and using the get methods in fiddler with some sample data in the table, I can get data from it.
When I try to insert a new record using a post method, I get the error:
"Cannot insert the value NULL into column 'Id', table 'Members'; column does not allow nulls. INSERT fails. The statement has been terminated."
The thing is, I am actually supplying the value for Id in the JSON string. I am copying the json string I get from the get/id method exactly and just changing the Id.
I do have a column on the table called Id which is set to not allow nulls, and is NOT set to auto increment. This is because the requirements of the system only require that it be present and unique. It doesn't have to be sequential. So I want the person inserting to be able to supply their own id.
I don't understand why this error is coming up, as I am supplying all the data required.
Here is the database:

and here is my JSON string:
{
"Id":687,
"FirstName":"auto",
"EMail":"auto",
"Eligible":true,
"InsertLogtime":"2015-07-21T00:51:59.917"
}
This is the server side code: Apologies for not including it. When I step into this in debugger, the members class is actually initialised with an Id.
// POST api/Members
[ResponseType(typeof(Members))]
public IHttpActionResult PostMembers(Members members)
{
if (!ModelState.IsValid)
return BadRequest(ModelState);
db.Members.Add(members);
db.SaveChanges();
return CreatedAtRoute("DefaultApi", new { id = members.Id }, members);
}

The Members class, as requested:
public partial class Members
{
public int Id { get; set; }
public string FirstName { get; set; }
public string EMail { get; set; }
public Nullable<bool> Eligible { get; set; }
public Nullable<System.DateTime> InsertLogtime { get; set; }
}
Below is the outermost exception stack trace...
at System.Data.Entity.Internal.InternalContext.SaveChanges()
at System.Data.Entity.Internal.LazyInternalContext.SaveChanges()
at System.Data.Entity.DbContext.SaveChanges()
at Xyz.Service.Controllers.MembersController.PostMembers(Members members) in c:\Repositories\Xyz\Xyz.Service\Controllers\MembersController.cs:line 41
at lambda_method(Closure , Object , Object[] )
at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass10.<GetExecutor>b__9(Object instance, Object[] methodParameters)
at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.Execute(Object instance, Object[] arguments)
at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken)
I'd really appreciate any help finding the problem.