我试图生成“视图”以增强我的应用程序的性能。该应用程序是Silverlight 4与服务器的RIA服务链接。服务器应用程序以EF 4.1 + RIA服务启动。 我安装了“EF Power Tools Beta 3 v0.7.0.0”,可以毫无问题地生成我的视图。但我很快意识到EF 4.1。无法从预编译的视图中受益。需要EF> = 4.2。 通过NuGet,我看到了RIA服务的更新(RIAServices.EntityFramework.4.2.0),它使用了EF 5.我安装并使一切正常工作但是当我尝试生成视图时,我得到一个例外:
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Reflection.ReflectionTypeLoadException: Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.
我尝试过重新安装PowerTools。没运气 我已经下载了PowerTools的源代码并调试了Exception。显然PowerTools正在尝试,但找不到旧的EF版本。 LoaderExceptions属性读为:
{System.IO.FileNotFoundException: Could not load file or assembly 'EntityFramework, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies.
我调查了PublicKeyToken并确认它与我的“bin”输出映射中找到的EF 5(EF 4.4 target = .NET 4)dll相同。但PowerTools正在寻找EF 4.1 ..为什么?
我的web.config文件包含:
<sectionGroup name="system.serviceModel">
<section name="domainServices" type="System.ServiceModel.DomainServices.Hosting.DomainServicesSection, System.ServiceModel.DomainServices.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" allowDefinition="MachineToApplication" requirePermission="false" />
</sectionGroup>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
和
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.4.0.0" newVersion="4.4.0.0" />
</dependentAssembly>
</assemblyBinding>
我还测试过在Web.config中更改PublicKeyToken只是为了确认我从PowerTools收到了另一个错误,因此PowerTools似乎解析了我的Web.config。
答案 0 :(得分:0)
更新: 我创建了一个新的Web项目,并将所有模型代码文件添加为链接。相同的连接串。现在我可以建立视图..奇怪..同样的参考。
当我将视图添加到原始项目时,RIA服务将无法启动。删除了视图,然后又重新开始了。