LINQ-to-Entities, неоднозначное имя столбца со связью между двумя представлениями с одинаковым именем столбца - PullRequest
7 голосов
/ 08 февраля 2012

Я только вхожу в Entity Framework впервые за простые примеры.

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

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

Я получаю ошибку:

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

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

1 Ответ

1 голос
/ 17 февраля 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...