2009-12-10 5 views
0

Название подводит итог моей проблеме. Я начинаю с пустой модели в VS2010 beta2, а затем выбираю для создания моей базы данных из модели, затем выбираю создать новую базу данных SQL CE. До этого момента все работает нормально. EF генерирует некоторый SQL и сохраняет его как MyModel.emdx.sql. Здесь возникает проблема, сгенерированный SQL не может быть выполнен в базе данных CE и выдает пару сообщений об ошибках, например «ALTER TABLE не поддерживается» и некоторые другие. Я считаю, что сначала нет модели с базой данных SQL CE, поэтому я вернусь к первому подходу базы данных. Или кому-нибудь удалось успешно создать базу данных SQL CE из модели edmx в VS2010?Entity Framework 4 + SQL Server CE + Создать базу данных из модели

+0

Не могли бы вы создать обычную базу данных SQL Server и затем каким-то образом передать ее в CE? –

+0

Я не уверен, что это будет проще, чем просто первый маршрут базы данных. Я мог бы также попробовать отредактировать сгенерированный SQL или просто воссоздать структуру базы данных в CE за руку, что не идеально, но поскольку база данных имеет только 3 таблицы, будет быстрее. – Gio2k

+0

эй Gio2k! У вас был успех с этим? Аналогичная проблема моя, кроме того, что я использую VS2008 Pro – Shalan

ответ

0

Я просто запустил скрипт MyModel.edmx.sql против базы данных SQL CE и выполнил его без ошибок. Я использовал VS 2010 RC, поэтому я подозреваю, что проблема, с которой вы столкнулись, была связана с выпуском Beta 2. Я делаю вывод, что проблема была решена в RC

0

Когда вы первый Сформировать базу данных из модели ..., вы создадите соединение в App.config. Если вы изначально создали соединение без CE, вы создадите не-CE SQL, и он получит расширение .sql, как вы описали (если ваше соединение с CE, вы получите расширение .sqlce в файле DDL).

Вы должны удалить ConnectionString из App.Config, и, возможно, источник данных из проекта -> Свойства -> DataSources. Затем, когда вы выберете Создайте базу данных из модели ... попросит создать новое соединение, и вы можете выбрать соединение CE вместо серверного.