0

我有一个我们在 MVC 4 和 Entity Framework 5.0 中开发的 Web 应用程序,它使用 .Net 4.5 运行良好。然后因为客户端托管不支持 .NET 4.5,我需要将所有内容降级到 .NET 4.0。我收到一个错误

Could not load System.Net.Http library or one of its dependencies 

直到我创建了全新的解决方案和项目,它们都以 .NET 4.0 为目标并使用 NuGet 重新安装所有必需的包。

现在,在本地一切正常,但是当我部署到服务器时,出现以下错误。

Schema specified is not valid. Errors: 
(0,0) : warning 0005: Could not find schema information for the attribute 'Namespace'.
(0,0) : warning 0005: Could not find schema information for the attribute 'Provider'.
(0,0) : warning 0005: Could not find schema information for the attribute 'ProviderManifestToken'.
(0,0) : warning 0005: Could not find schema information for the attribute 'Alias'.
(0,0) : error 0010: The element Schema in namespace http://schemas.microsoft.com/ado/2009/11/edm/ssdl was unexpected for the root element. The expected Schema in one of the following namespaces: http://schemas.microsoft.com/ado/2006/04/edm/ssdl, http://schemas.microsoft.com/ado/2009/02/edm/ssdl.

现在,我已确保我使用的所有库都针对 .NET 4.0。NuGet 继续安装 EF 5.0,但我在此处阅读的库版本读取 (4.4)应该可以使用 .NET 4.0。

我不知道我哪里出错了,但它变得非常令人沮丧,任何帮助将不胜感激。我们使用的是 EF 4.4 Code First(DbContext 和

另外,不确定这是否会有所不同,我们正在使用 CustomMembershipProvider,它在本地运行良好,我们目前仅将其用于身份验证。为了摆脱等式,我从 Web.Config 中取出了它的配置,但仍然存在同样的问题。

4

1 回答 1

1

我发现问题出在两件事上:

  1. 在其中一个模型(类)中,我的同事使用了一个枚举,它在 .NET 4.0 的 EF 5.0 中不受支持。此功能适用于 .NET 4.5 上的 EF 5,但不适用于 .NET 4.0,它会导致问题。

  2. 模型检查器在尝试使用我的 EF 模型检查当前数据库状态时也失败了。虽然没有变化,但刚检查时还是失败了。要修复它,我需要更改此行

Database.SetInitializer(new DropCreateDatabaseIfModelChanges<ChiptronicsContext>());

到以下

Database.SetInitializer<ChiptronicsContext>(null);

您将在 Global.asax.cs 中找到这一行

实际上,这条线导致 EF 检查数据库并确保它与我的模型同步,所以我只需要将我在本地生成的数据库之一恢复到服务器,然后运行它,一切顺利。希望这可以帮助别人。

于 2012-12-25T13:11:21.887 回答