LINQ-to-Entities, неоднозначное имя столбца с ассоциацией между двумя представлениями с тем же именем столбца

122
11

Я просто попадаю в Entity Framework впервые за пределами простых примеров.


Я использую подход, основанный на модели, и я запрашиваю источник данных с помощью LINQ-to-Entities.


Я создал модель сущности, которую я предоставляю в качестве службы OData для базы данных, где я не контролирую схему. В моей модели у меня есть две сущности, основанные на двух представлениях в этой базе данных. Я создал связь между двумя объектами. Оба представления имеют столбец с тем же именем.


Я получаю сообщение об ошибке:


Неоднозначное имя столбца 'columnname'. Невозможно использовать представление или функцию 'viewname' из-за ошибок привязки.



Если бы я сам писал инструкцию SQL, я бы квалифицировал одно из имен столбцов с псевдонимом, чтобы предотвратить эту проблему. По-видимому, EF этого не делает. Как это исправить, если не изменить вид? (что я не могу сделать) Я думаю, что это имеет какое-то отношение к этим объектам, сопоставленным с представлениями, вместо того, чтобы сопоставляться с фактическими таблицами.

спросил(а) 2021-01-19T17:44:49+03:00 2 месяца, 3 недели назад
1
Решение
62

Предполагая, что вы можете изменить модель, вы попытались войти в модель и просто изменить одно из имен столбцов? Я все еще вижу, как это может быть проблематично, если два представления возвращают один и тот же столбец из одной таблицы. Я могу сказать, что при прямой работе с моделью, сопоставленной с таблицами, одинаковые столбцы не являются проблемой. Даже имея несколько ассоциаций с одной и той же таблицей, обрабатываются правильно, свойствам навигации автоматически присваиваются уникальные имена. В зависимости от того, какую версию EF вы использовали, вы должны быть в состоянии заглянуть в файл cs либо под моделью, либо под файл шаблона t4 и посмотреть, что происходит. Тогда вы всегда можете создать частичный класс, чтобы согнуть его по своему желанию.

ответил(а) 2021-01-19T17:44:49+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема