Переключение в Entity Framework 4 между хранилищами SQLCompact и SQLExpress - PullRequest
2 голосов
/ 04 июля 2010

Вот пример использования

  • В SQLExpress я создал таблицу сообщений с ID столбца и именем
  • edmx создается на основе этой таблицы
  • Я создаю базу данных SQLCompact с такой же структурой (имя таблицы Posts, ID столбца и Name)

Если я обновлю app.config так, чтобы он указывал на SqlCompact DB (при условии, что я делаю это правильно), будет ли код EF работать без проблем с SqlCompact db?

Причина, по которой я спрашиваю это, связана с исключением, которое я получаю при попытке выше

System.InvalidCastException occurred
  Message=Unable to cast object of type 'System.Data.SqlServerCe.SqlCeConnection' to type 'System.Data.SqlClient.SqlConnection'.
  Source=System.Data
  StackTrace:
       at System.Data.SqlClient.SqlCommand.set_DbConnection(DbConnection value)
       at System.Data.Common.DbCommand.set_Connection(DbConnection value)
       at System.Data.Common.Utils.CommandHelper.SetStoreProviderCommandState(EntityCommand entityCommand, EntityTransaction entityTransaction, DbCommand storeProviderCommand)
       at System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior)
       at System.Data.Objects.Internal.ObjectQueryExecutionPlan.Execute[TResultType](ObjectContext context, ObjectParameterCollection parameterValues)
       at System.Data.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption)
       at System.Data.Objects.ObjectQuery`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator()
       at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)
       at System.Data.Objects.ELinq.ObjectQueryProvider.<GetElementFunction>b__1[TResult](IEnumerable`1 sequence)
       at System.Data.Objects.ELinq.ObjectQueryProvider.ExecuteSingle[TResult](IEnumerable`1 query, Expression queryRoot)
       at System.Data.Objects.ELinq.ObjectQueryProvider.System.Linq.IQueryProvider.Execute[S](Expression expression)
       at System.Linq.Queryable.FirstOrDefault[TSource](IQueryable`1 source)

1 Ответ

2 голосов
/ 05 июля 2010

Звучит так, как один edmx не может использоваться как для SQL Server, так и для SQL Compact MSDN Форумы ссылка с ответом

Я не уверен, насколько это превосходит точку edmx, но это ответ на мой вопрос:)

...