我有一个针对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标记来设置初始化程序的问题,但是这种理解并不能使我感到满意或高兴