我正在尝试在我们的silverlight应用程序中将EntityFramework从v4升级到v6。由于我们使用WCF RIA服务,我们必须将其升级到OpenRia(因为属性WCF RIA仅支持EF5)。
但是,每当我尝试在Silverlight应用程序中安装“OpenRiaServices.EntityFramework”时,我都会得到:
无法安装软件包'OpenRiaServices.EntityFramework 4.3.0.0'。您正在尝试将此软件包安装到以“Silverlight,Version = v5.0”为目标的项目中,但该软件包不包含任何与该框架兼容的程序集引用或内容文件。有关更多信息,请与软件包作者联系。
我认为这是因为dll,目标是“.NET Framework”,而Silverlight应用程序的目标是“Silverlight” - 问题是:它有什么办法吗?
第二个问题 - 可能,或者可能与第一个问题无关 - 即使在我安装OpenRia后,我在合并期间也会出现以下错误:
错误206类型'System.ServiceModel.DomainServices.Client.EntityQuery`1'在未引用的程序集中定义。您必须添加对程序集'System.ServiceModel.DomainServices.Client,Version = 2.0.5.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'的引用。
当然上面的DLL是旧RIA实现的一部分,并且无法以任何方式引用它?
是否可以将EF6与使用RIA的silverlight应用程序一起使用?
答案 0 :(得分:2)
我们使用的是EF6 + OpenRia,但不是通过NuGet。所有RIA dll都存储在" Lib"文件夹并手动引用。然后我安装"打开Ria服务工具和模板",有一个VS扩展,而不是NuGet包。
.Ria(Silverlight 5)项目有参考文献:
OpenRiaServices.Data.DomainServices.dll (2.0.5.0)
OpenRiaServices.DomainServices.Client.dll (2.0.5.0)
OpenRiaServices.DomainServices.Client.Web.dll (2.0.5.0)
.Ria.Web(.NET 4.5类库)项目有参考:
OpenRiaServices.DomainServices.EntityFramework.dll (4.0.0.0)
OpenRiaServices.DomainServices.Hosting.dll (4.0.0.0)
OpenRiaServices.DomainServices.Server.dll (4.0.0.0)
在.Ria项目文件的末尾,我添加了下一个元素:
<Import Project="..\..\..\Libs\Silverlight\OpenRia\CodeGen\OpenRiaServices.Silverlight.CodeGen.targets" Condition="Exists('..\..\..\Libs\Silverlight\OpenRia\CodeGen\OpenRiaServices.Silverlight.CodeGen.targets')" />
(您必须为您的RIA .target参考修改此字符串)
通过NuGet安装EF 6.0.2。