Сначала код EF 4.1 вызывает странные ошибки - PullRequest
7 голосов
/ 06 мая 2011

Сначала я использую код EF 4.1.В очень странной ситуации: база данных не существует, код выполняется, и как только код хочет выполнить запрос к хранилищу (используя также шаблон хранилища)

MyRepsitory.Get(whereClause)

я получаю эту ошибку:

Невозможно открыть базу данных "MyDatabase", запрошенную при входе в систему.Ошибка входаНе удалось войти в систему для пользователя 'sa'.

OK!Поэтому я попытался выяснить, чем это вызвано, и сделал следующее: установил точку останова на строке, которая вызвала ошибку, и как только эта строка была нажата, я выдал из окна отладки (просмотра) другой запрос к хранилищу

MyRepository.GetAll();

и вуаля база данных создана.Поэтому я подумал: почему бы не обмануть базу данных (как обходной путь) и выдать этот запрос к хранилищу?Результат: я получаю ту же ошибку, как только она выполняется в коде!

Что я делаю не так?Раньше это работало как шарм!

РЕДАКТИРОВАТЬ Это сводит меня с ума!Я выделил модель и некоторый код (для шаблона репозитория) в новый проект.Попытался выполнить тот же код, и он работает в этом новом проекте.Как это возможно?

Посмотрел в логах SQL Serv2008 Exp и вижу следующие ошибки / события:

Запуск базы данных 'MyDatabase'

Настройка опции базы данных SINGLE_USERВКЛ для базы данных MyDatabase.

Ошибка: 18456, уровень серьезности: 14, состояние: 38.

Ошибка входа пользователя 'sa'.Причина: не удалось открыть явно указанную базу данных.[КЛИЕНТ:]

Ответы [ 3 ]

9 голосов
/ 18 мая 2011

спасибо Savvas за то, что вы поделились тем, что создание нового решения решило вашу проблему. Я столкнулся с той же странной проблемой с EF 4.1, и удаление файла VS2010 "SUO", похоже, помогло мне. Думаю, я поделюсь этим, чтобы сэкономить время на воссоздание решения с нуля.

1 голос
/ 22 июля 2011

Я столкнулся с этим и, немного покопавшись, обнаружил, что проблема с Code First, думая, что это единственный владелец схемы.

http://social.msdn.microsoft.com/Forums/en/adonetefx/thread/79885a6d-e0f2-4948-8f3c-d5da1941ace3

Они не совсем поняли это для пользовательских экземпляров БД (вот где «User Instance = true» находится в строке подключения, и вы создаете файл SQL Server в папке App_Data). Поэтому либо удалите его, либо используйте следующее:

Data Source=.\SQLEXPRESS;Database=NerdDinners;Integrated Security=SSPI;

Code First создаст и присоединит (или изменит) базу данных непосредственно к вашему экземпляру SQL Server. Затем вы можете подключиться к нему с помощью Management Studio или VS Server Explorer.

1 голос
/ 06 мая 2011

Ради будущего использования: оказывается, что EF 4.1 не был источником моих проблем!

Как я уже говорил выше (после РЕДАКТИРОВАНИЯ), можно запустить (НЕИЗМЕНЕННЫЙ) код вновый проект, и он будет выполняться как ожидалось!

Также верно, что я успешно создал новый проект, сослался на модель и DAL (хранилища и т. д.) исходного проекта и новый код в новомПроект выполнен как ожидалось.

Это привело меня к мысли, что это проблема, связанная с решением (или проектом) Visual Studio 2010.Я не могу вспомнить, что сделал что-то странное с этим решением (единственное, что я сделал, это добавил тест-проект, который я впоследствии удалил, а также некоторые - я думаю, три файла - связанные с этим проектом - тест-проект - ЭТО СТРАННОЕ ?!).

Единственное решение, о котором я мог подумать, - это создать новое решение Visual Studio 2010 с нуля и поместить оригинальные проекты в дерево решений ... и это сработало!

...