если вы удалите set;
из идентификатора ViewModel, тогда он не будет установлен;
в противном случае вы можете сохранить значение идентификатора в отдельной переменной и вернуть его после введения,
или вы можете создать пользовательскую инъекцию значения, которая будет игнорировать "ID" или получит список свойств, которые будут игнорироваться в качестве параметра
вот пример для пользовательской инъекции, которая получает список имен свойств, которые следует игнорировать:
public class MyInj : ConventionInjection
{
private readonly string[] ignores = new string[] { };
public MyInj(params string[] ignores)
{
this.ignores = ignores;
}
protected override bool Match(ConventionInfo c)
{
if (ignores.Contains(c.SourceProp.Name)) return false;
return c.SourceProp.Name == c.TargetProp.Name && c.SourceProp.Type == c.TargetProp.Type;
}
}
и используйте его так:
pvm.InjectFrom(new MyInj("ID"), p);
если вам нужно игнорировать больше, вы можете сделать так:
pvm.InjectFrom(new MyInj("ID","Prop2","Prop3"), p);