使用System.Data.Entity v4和EF 6.1的项目-添加Nuget Targeting 3.5并使用System.Data v2后出现编译错误

时间:2019-07-16 09:44:15

标签: c# entity-framework system.data

我有一个针对fw 4.6.2的C#项目,该项目使用Entity Framework 6.1和System.Data版本4。

我需要使用针对fw 3.5且依赖于System.Data的Nuget程序包,但是此Nuget程序包使用的版本是2,该程序包与EF没有任何依赖关系。

当我导入NuGet程序包时,以前是可以正常工作的一段代码,它甚至停止编译,我很难理解为什么,而对我而言这是透明的。

public class MyContext: DbContext
{
    public MyContext()
        : base("MyConnectionString")
    {
    }

    static MyContext()
    {
        Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyContext, Migrations.Configuration>());
    }

    public virtual DbSet<DbSetName> DbSetName { get; set; } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Configurations.Add(new RtsConnectionMapping());
        base.OnModelCreating(modelBuilder);
    }
}

反编译数据库类(使用JetBrains反编译器),我可以看到:

  

类型:System.Data.Entity.DbContext   程序集:EntityFramework,版本= 6.0.0.0,文化=中性,PublicKeyToken = b77a5c561934e089

并且代码包含方法SetInitialixer。

由于NuGet不依赖于任何版本的EF,我所要做的就是对发生的情况的解释,我只能相信System.Data是引起此问题的原因吗? 我尝试使用绑定重定向,但未进行任何更改,也许我创建的绑定重定向不正确。

<dependentAssembly>
    <assemblyIdentity name="System.Data" publicKeyToken="b77a5c561934e089" culture="neutral"/>
    <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0"/>
</dependentAssembly>

任何人都可以尝试向我解释如何处理这种情况吗?

注意:我解决了删除代码失败并使用web.config entityFramework / contexts / contextdatabaseInitializer xml标记来设置初始化程序的问题,但是这种理解并不能使我感到满意或高兴

0 个答案:

没有答案