Wendelius
Как уже упоминалось ранее, при преобразовании данных в varchar вы можете объединить столбцы.
Однако я бы не советовал форматировать данные таким образом в SQL-запросе. Основываясь на сообщении об ошибке первичного ключа, вы используете EF. Если это правильно, то лично я предпочел бы ввести столбцы в качестве полей datetime в модель, а затем добавить вычисляемые поля в сущность, чтобы показать даты в нужном формате. Другими словами, форматирование будет выполняться на стороне клиента.
Причина этого заключается в том, что SQL не предназначен для форматирования данных, основное использование-манипулирование данными и их извлечение. Другое дело, что если форматирование зависит от настроек на стороне клиента, то их нужно учитывать при построении SQL-оператора. Например, преобразование потребует различных параметров, если дата должна быть ДД.ММ.гггг или если она должна быть ММ/ДД / гггг. Я считаю, что сделать преобразование и конкатенацию на стороне клиента было бы проще.
Что же касается ошибки 6002. Если вы выполняете форматирование на стороне клиента, вы можете получить данные непосредственно из базовой таблицы. В таком случае вы больше не получите ошибку, если в таблице есть действительный первичный ключ.
Если вы хотите использовать вид, то у вас есть несколько возможностей
- сообщение, вероятно, является предупреждением, поэтому, поскольку вы все равно не собираетесь обновлять представление, вы можете игнорировать это предупреждение
- добавьте сгенерированное уникальное значение в представление и определите его как ключ в модели. Один из способов создания ценности-использовать ROW_NUMBER (Transact-SQL)[^]