+1  A: 

I think the problem might be your variable name and class name are identical.

Perhaps in your ViewModel rename to something like,

public Book BookInstance { get; set; }

That'll require a bit of a refactor through, but I think it is the cause of your issue.

Kindness,

Dan

Daniel Elliott
No changing the property name doesn't make any difference
Zuhaib
A: 

I did not find any solution as of now .. m using prefix to solve this .. if I find out anything I would post it here again.

Thank you

Zuhaib