4

这是我的设置: MVC应用程序 与我使用RIA服务,使Silverlight应用程序交互使用Enitity框架代码首先 Silverlight应用程序(在MVC应用程序中显示)我可以在实体框架4.3中使用RIA服务吗?

数据访问层域模型与数据库。

从现在起,Ria服务仅支持实体框架4.1。当前版本是4.3。似乎是一个浪费,不能获得EF的新功能(就像迁移并希望在未来支持enum),只是因为Silverlight应用程序的Ria服务。因此

我的问题是:

  1. 是否合理依靠利雅服务首先使用EF代码时(也就是将它们总是那么多落后难道这是在路上出了问题? ?)
  2. 如果Silverlight应用程序不依赖于我使用的ORM版本,您是否有其他解决方案?
+0

怎么样只是使用WCF抽象层?如果你选择ria服务,你会尝试你的手。 – 2012-02-15 23:54:47

+0

这就是我所害怕的。一开始似乎是一种快速简单的解决方案,可能会在以后造成严重的痛苦。我使用SL来显示/创建报告并使用我使用Telerik RAD控件来实现我需要实现的功能,但不需要被别人访问而不是管理员=>尽可能少地花费在他们身上,但仍然可以高效地使用。 RIA使我几乎可以将这些方法支撑起来,并将它绑定到SL视图中的控件。WCF可以做到这一点吗?你会在IIS上发布WCF吗? – cfs 2012-02-16 00:11:02

+1

我看到它的方式,RIA是建立Silverlight应用程序的快速/肮脏的小应用程序方便的方式。让我想起拖拽设计师的数据集。你可能会看看WCF数据服务或http://stackoverflow.com/questions/2523629/ria-services-versus-wcf-services-what-is-a-difference – 2012-02-16 00:27:28

回答

4

RIA Services可以与NHibernate或任何其他ORM或对象/域模型一起使用。只有一些VS向导暗示EF和RIA服务之间存在耦合,但显然不需要使用这些向导,EF和RIA服务之间也不存在耦合。

问题的答案“我可以在实体框架4.3中使用RIA服务吗?”绝对是。

OData是RIA Services的替代产品,但它有很多限制,并不打算成为直接的竞争对手。 WCF也是一种选择。

+1

嗨,谢谢你的回应。我一定错了,但这听起来像个好消息。如果我在VS2010中使用NuGet包安装程序,它不会允许我安装RiaServices.Entityframework,因为它表示EF版本<4.2。你知道吗?你知道任何显示如何实施Ria服务的资源。请记住,我使用EF Code First,因此我没有看到过,因为我已经看到了,只有当我映射数据库并从DB创建新的上下文模型时,我才会有一个问题,但是这个解决方案并不完美。 – cfs 2012-02-16 13:11:30

+4

你已经确定了其中一个限制。首先,“添加新的 - > DomainService”向导无法正确使用EF4.3。其次,RIA.EF的NuGet包在4.1版上有一个硬锁。现在,您可以使用RIA Toolkit安装程序(http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=26939)绕过NuGet锁定。此时,您应该可以升级到EF4.3。另外,我希望在不久的将来能够看到NuGet约束。 – 2012-02-16 17:42:49

+0

谢谢!好的,所以我跟着你小费,开关比我想象的要容易。我从你的链接下载了RIA Toolkit安装程序。删除了我的旧服务。在升级到EF 4.3之前创建了一个新的DomainService,因此我得到了CRUD脚手架并节省了一些时间。升级到EF 4.3,现在一切似乎工作得很好。再次感谢。 – cfs 2012-02-16 22:03:23

0

在RIA服务正确支持EF4.3之前获得迁移的解决方法也可以创建专门用于迁移的项目,与Visual Studio Ultimate中的数据库项目类似。

该模型需要通过“添加为链接”包含在这样的项目中,您需要确保它可以在两个项目中编译。例如,您可能需要定义一些在RIA-Services中定义的虚拟属性(“Include”将是一个)。

这并不理想,但在某些情况下它可能是最好的选择。

0

要获取RiaServices.EntityFramework NuGet包的<版本4.2的锁的临时解决方法,我已使用NuGet Package Explorer以更改包的元数据并删除约束。

记住您必须添加local cache as NuGet source

工具 - >选项 - >软件包管理器 - >包装源 - >添加(C:/用户/用户名%%/ APPDATA /本地/的NuGet /缓存)

相关问题