Схватил это из образца:EntityFramework.dll DbContext конфликтует с Microsoft.data.Entity.CTP DbContext
protected override ObjectContext CreateDataSource()
{
NorthwindContext nw = new NorthwindContext();
// Configure DbContext before we provide it to the
// data services runtime.
nw.Configuration.ValidateOnSaveEnabled = false;
// Get the underlying ObjectContext for the DbContext.
var context = ((IObjectContextAdapter)nw).ObjectContext;
// Return the underlying context.
return context;
}
Модифицированный его использовать класс DbContext, что у меня есть в моем проекте.
EDIT: Разъяснение, что я литьем из класса DbContext так же, как образец делает:
public class NorthwindContext : DbContext
{
// Use the constructor to target a specific named connection string
public NorthwindContext()
: base("name=NorthwindEntities")
{
// Disable proxy creation as this messes up the data service.
this.Configuration.ProxyCreationEnabled = false;
// Create Northwind if it doesn't already exist.
this.Database.CreateIfNotExists();
}
Выполнение кода дает мне ошибку на линии литья DbContext:
Unable для создания объекта типа «MyProject.MyDbContext» для ввода «System.Data.Entity.Infrastructure.IObjectContextAdapter».
Несмотря на то, что DbContext реализует IObjectContextAdapter:
public class DbContext : IDisposable, IObjectContextAdapter
Я нашел несколько вопросов здесь, на SO и других гугле источников, но не решения, которые я нашел работу.
Я использую Entity Framework 4.2, попытался обновить до 4.3 beta, и я не уверен, что это застряло.
Общая цель заключается в обслуживании данных в WCF как DataService.
Update: Копаем глубже я считаю, что существует проблема неоднозначности между тем, что мой DbContext был (от EntityFramework.dll) и тип в проекте WCF (от Microsoft.data.Entity.CTP)
Не знаю, как получить то, что я хочу от обоих здесь.
Не могли бы вы проверить, не является ли ваш NorthwindContext объектом ObjectContext? – ivowiblo
@ivowiblo отредактирован для уточнения. – KenEucker
Возможно ли, что у вас есть две разные ссылки на две разные сборки EntityFramework.dll? Похоже, у вас есть две версии IObjectContextAdapter, и нельзя преобразовать их в другую. Убедитесь, что у вас есть только одна версия EntityFramework.dll. Я думаю, что служба данных WCF (это октябрьский CTP, который вы пытаетесь?) Должен работать с последней версией EntityFramework ... – Pawel