Exception is thrown only if PK property is virtual, so I changed code of Property
a little
public string Property(EdmProperty edmProperty, MetadataTools ef)
{
var acessability = Accessibility.ForProperty(edmProperty);
return string.Format(
CultureInfo.InvariantCulture,
"{0} {1} {2} {{ {3}get; {4}set; }}",
ef.IsKey(edmProperty) ? acessability : AccessibilityAndVirtual(acessability),
_typeMapper.GetTypeName(edmProperty.TypeUsage),
_code.Escape(edmProperty),
_code.SpaceAfter(Accessibility.ForGetter(edmProperty)),
_code.SpaceAfter(Accessibility.ForSetter(edmProperty)));
}