2012-01-27 98 views
0

冲突的抓起这个从样品: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类。

编辑:澄清,我从一个的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和其他谷歌搜索源,但没有解决方案,我已经找到了工作。

我正在使用实体框架4.2,试图更新到4.3测试版,我不确定是否卡住。

总体目标是将WCF中的数据作为DataService提供。

更新:进一步挖掘我发现有什么之间我的DbContext是(从EntityFramework.dll)和WCF项目(从Microsoft.data.Entity.CTP)

类型的歧义问题不知道如何从这里得到我想要的...

+0

你能检查你的NorthwindContext是不是一个ObjectContext本身吗? – ivowiblo 2012-01-27 20:01:17

+0

@ivowiblo编辑澄清。 – KenEucker 2012-01-27 20:12:02

+0

是否有可能对两个不同的EntityFramework.dll程序集有两个不同的引用?看起来你有两个版本的IObjectContextAdapter,一个不能转换为另一个版本。确保你只有一个EntityFramework.dll版本。我认为WCF数据服务(它是你尝试的十月CTP)应该与最新版本的EntityFramework一起工作... – Pawel 2012-01-27 23:46:19

回答

0

只是提醒,这里的问题是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。

只有一个