Only one member on a type can capture the return value of a command; remove the duplicate.
Bad:
[DbValue(Direction = ParameterDirection.ReturnVaue)]
public int X {get;set;}
[DbValue(Direction = ParameterDirection.ReturnVaue)]
public int Y {get;set;}
Good:
[DbValue(Direction = ParameterDirection.ReturnVaue)]
public int X {get;set;}
public int Y {get;set;}