Пользователь является зарезервированным ключевым словом T-SQL и не может использоваться просто так - и в любом случае это плохая практика.
Если вы настаиваете на его использовании, то вы должны заключить его в квадратные скобки:
string query = @"INSERT INTO dbo.PrivateUsers([user]) VALUES(@user);";
Это своего рода взлом, но вы можете использовать Visual Studio / Resharper для извлечения интерфейса из класса, затем создать класс DTO и наследовать из интерфейса, а затем использовать Visual Studio для автоматической реализации члены интерфейса (затем, при желании, удалите интерфейс).
Другое мнение - использовать некоторый код отражения в шаблоне T4.
Шаблоны T4 - одна из мощных скрытых функций Visual Studio.
Посмотрите здесь , чтобы увидеть, насколько легко начать работу с T4.