EF 4.1 использует неправильную схему в сгенерированном sql

Я новичок в EF, и я не могу понять, что я делаю неправильно. Я использовал EF 4.1 «сначала базу данных», чтобы создать модель для существующей базы данных (которую я не могу изменить). Все таблицы, которые мне нужны в базе данных, находятся в определенной схеме, которую для этого вопроса я назову «my_schema». В основных свойствах файла конструктора edmx я установил имя схемы базы данных на «my_schema». Когда я проверяю необработанный XML файла edmx, он, кажется, имеет правильные сопоставления схем.

e.g.

<EntitySet Name="Events" EntityType="MyModel.Store.Events" store:Type="Tables" Schema="my_schema" />

Однако SQL, сгенерированный, когда я получаю доступ к объекту Events, установленному в классе DbContext, по-прежнему:

SELECT ....
FROM dbo.Events

Я не уверен, имеет ли это какое-то значение, но я использую ADO.net DBContextGenerator для создания своих классов.

Кто-нибудь знает, что я делаю неправильно.


person Ben Robinson    schedule 15.11.2011    source источник
comment
Я не уверен, что могу дать конкретный совет, но использовали ли вы функцию «Найти в файлах» для поиска строки "dbo" в исходном коде вашей модели? Это может привести вас в правильном направлении.   -  person Adam Robinson    schedule 15.11.2011
comment
Я использую сопоставление на основе pocos и соглашений, поэтому в фактическом сгенерированном исходном коде С# моих классов сущностей и контекста нет никаких баз данных. В источнике xml файла edmx нет ссылок на dbo.   -  person Ben Robinson    schedule 15.11.2011


Ответы (1)


Хорошо, я понял это сейчас, и это сводится к моему незнанию того, как работает EF. Я передавал свой DbContext обычную строку подключения ADO.net, которая, кажется, переводит ее в режим первого кода. Таким образом, любые настройки и конфигурации в моей модели edmx игнорировались, и он искал атрибуты в классах модели. Как только я изменил его, чтобы использовать строку EF, которая включает ссылки на файлы метаданных модели, она работает. Теперь это кажется очевидным, понятия не имею, как я ожидал, что он волшебным образом узнает о метаданных модели.

person Ben Robinson    schedule 17.11.2011
comment
Когда мы не понимаем, как что-то работает, это всегда кажется волшебством. - person Vincent Vancalbergh; 24.02.2012
comment
Как выглядит строка подключения EF и как выглядит строка подключения ADO.net? У меня та же проблема, но у меня есть application name=EntityFramework и providerName="System.Data.EntityClient" в строке подключения (что для меня выглядит очень EF). - person Matt Arnold; 14.05.2019