Linqpad Приведение объекта ошибки в IObjectContextAdapter - PullRequest
0 голосов
/ 08 декабря 2011

Я использую Linqpad v4.37.3, пытаясь подключиться к сборке, используя Entity Framework 4.1.Я смог пройти через мастера и создать соединение.Я использую строку подключения:

<?xml version="1.0"?>

<configuration>
<connectionStrings>
    <add name="EFEntities" 
         connectionString="metadata=res://*/Common.Database.DatabaseModel.csdl|res://*/Common.Database.DatabaseModel.ssdl|res://*/Common.Database.DatabaseModel.msl;
         provider=System.Data.SqlClient;provider connection string='Data Source=ServerAddress;
         Initial Catalog=database;User ID=username;Password=password;
         MultipleActiveResultSets=True'" providerName='System.Data.EntityClient' />
</connectionStrings>
</configuration>

Когда я проверяю соединение, оно говорит "успешно".Но когда я пытаюсь расширить базу данных, я получаю следующую ошибку:

Невозможно привести объект типа 'EFEntities' к типу 'System.Data.Entity.Infrastructure.IObjectcontextAdapter'.

Я не совсем уверен, что мне нужно изменить, чтобы получить эту работу, и я не могу найти кого-то еще с этой проблемой.

Ответы [ 2 ]

2 голосов
/ 09 декабря 2011

Это проблема совместимости сборок и поддержки EF 4.1 против 4.2: Fusion иногда бывает отвратительным. Попробуйте последнюю (4.37.5) бета-версию - она ​​содержит переписывание интерфейса к EntityFramework. Новая версия LINQPad больше не ссылается на EntityFramework.dll статически - вместо этого она использует Reflection для вызова членов EF и Reflection.Emit для реализации интерфейсов, основанных на фактической сборке EF, на которую вы ссылаетесь. Это должно избавить от проблемы, которую вы испытываете. Дайте мне знать, если в новой версии есть глюки.

0 голосов
/ 09 декабря 2011

Бета-версия 4.37.5 решила проблему 'IObjectcontextAdapter' для меня.

Теперь я могу видеть объекты в браузере объектов слева.

Тем не менее, каждый запрос / оператор, который я пытаюсь выполнить, просто приводит к следующей ошибке:

Value cannot be null.
Parameter name: key

Кажется, что это происходит еще до того, как оно достигнет EF-части.

Если я пытаюсь запустить следующее как программу на C #:

void Main()
{
    HibernatingRhinos.Profiler.Appender.EntityFramework.EntityFrameworkProfiler.Initialize();
}

или просто

void Main()
{
    for (int i = 0; i++; i < 100)
    {
        // nothing
    }
}
  • Я получаю ту же ошибку, так что, похоже, она не связана напрямую с EF. Однако, если я подключаюсь напрямую к базе данных SQL, у меня нет проблем с выполнением операторов.

Я использую EF 4.1.

Редактировать: Извините, это должен был быть ответ на ответ Джо Албахари.

...