Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DbContext的TypeLoadException_C#_Asp.net Mvc_Entity Framework - Fatal编程技术网

C# DbContext的TypeLoadException

C# DbContext的TypeLoadException,c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,我有两个项目。第一个项目是dll项目,第二个是mvc4网站。 在dll中,我有一个实体数据模型,从中我自动生成了DbContext 在Global.asax中,我使用以下行初始化数据库: System.Data.Entity.Database.SetInitializer( new DropCreateDatabaseAlways<WebConfigEntities>() ); 如何解决此问题?翻译异常会有所帮助。在泛型方法中指定上下文是否有帮助?像这样: System.Data.

我有两个项目。第一个项目是dll项目,第二个是mvc4网站。 在dll中,我有一个实体数据模型,从中我自动生成了DbContext

在Global.asax中,我使用以下行初始化数据库:

System.Data.Entity.Database.SetInitializer( new DropCreateDatabaseAlways<WebConfigEntities>() );

如何解决此问题?

翻译异常会有所帮助。在泛型方法中指定上下文是否有帮助?像这样:

System.Data.Entity.Database.SetInitializer<WebConfigEntities>( new DropCreateDatabaseAlways<WebConfigEntities>() );
System.Data.Entity.Database.SetInitializer(新的DropCreateDatabaseAlways());
如何将connectionString传递给WebConfigEntities类? 你能把它的构造器贴出来吗

EntityFramework执行了一些神奇的操作,从
.config
文件中检索connectionString。如果将模型放在单独的dll中,则可能无法正常工作。
这并不意味着你不能把模型放在dll中,你当然可以。我在几个项目中都这样做过。

这种类型的错误通常表示不同的程序集以某种方式引用了EntityFramework.dll的不同版本。确保所有项目(以及引用程序集中的任何其他项目)都使用完全相同的版本。此外,请确保GAC中没有EntityFramework.dll,或者如果必须在GAC中有EntityFramework.dll,则它也是所引用的同一版本


如果您使用的是针对不同版本生成的外部依赖项,并且无法更改此版本,则可能需要设置绑定重定向,以确保CLR正确解析该版本。

我犯了一个错误,从EF dll的解决方案资源管理器获取的版本号不是nuget的版本包裹因此,我加载了nuget软件包版本6.0.0,而不是6.2.0


您能翻译例外情况吗?翻译为:GenericaArguments[0],WebConfigDB.WebConfigEntities,for System.Data.Entity.IDatabaseInitializer`1[TContext]不受类型参数TContext的限制。如果我指定了上下文,也会得到错误。这似乎与dll有关。我没有得到错误,如果模型是在网站项目。但我希望将数据库模型放在dll中,因为它也在另一个项目中使用。构造函数是public WebConfigDBEntity():base(“name=WebConfigConnection”){},它被添加到web中。config此解决方案节省了我的时间。
System.Data.Entity.Database.SetInitializer<WebConfigEntities>( new DropCreateDatabaseAlways<WebConfigEntities>() );