Универсальные репозитории являются антишаблоном Entity Framework.Они, честно говоря, не стоят хлопот.
Однако, чтобы отобразить столбец ProductID в сущности:
entity.Property(e => e.Id)
.HasColumnName("ProductId");
entity.Ignore(e => e.ProductId);
Подвох заключается в том, что при написании выражений Linq, которые будут проходить через EF в SQL, нужно избегатьиспользуя любые игнорируемые свойства.
В качестве альтернативы я бы предложил удалить поле ProductId в сущности и просто переназначить поле в ваших моделях представления и DTO, которые использует интерфейсный код и любой сериализатор, настроив Automapper для переводаСтолбец ID.