EntityFramework.dll DbContext конфликтует с Microsoft.data.Entity.CTP DbContext - PullRequest
0 голосов
/ 27 января 2012

Получил это из примера:

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, который есть в моем проекте.

РЕДАКТИРОВАТЬ: Уточняю, что яприведение из класса 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:

Невозможно привести объект типа 'MyProject.MyDbContext 'для ввода' System.Data.Entity.Infrastructure.IObjectContextAdapter '.

Несмотря на то, что DbContext реализует IObjectContextAdapter:

public class DbContext : IDisposable, IObjectContextAdapter

Я нашел несколько вопросовздесь, в SO и других источниках с гуглом, но никаких решений я не нашел.

Я использую Entity Framework 4.2, попытался обновить бета-версию 4.3, и я не уверен, что она застряла.

Общая цель состоит в том, чтобы обслуживать данные в WCF как DataService.

Обновление: копание глубже Я обнаружил, что существует проблема неоднозначности между тем, чем был мой DbContext (From EntityFramework.dll)и тип в проекте WCF (из Microsoft.data.Entity.CTP)

Не уверен, как получить то, что я хочу от обоих здесь ....

1 Ответ

0 голосов
/ 28 января 2012

Просто напоминание, проблема здесь заключалась в том, что двусмысленность между EntityFramework.dll и Microsoft.Data.Entity.CTP приводила к тому, что DataInitializer, который был у меня для моего DbContext, терял функциональность.

Я решил эту проблему, заменив мой инициализатор здесь:

public class MyDataInitializer : RecreateDatabaseIfModelChanges<MyData>
{
    public void Seed(MyData context)

Кому:

    public class MyDataInitializer : IDatabaseInitializer<MyData>
{
    public void InitializeDatabase(MyData context)

И теперь я могу получить доступ к своему DataService.

Всего один

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...