在WPF,Silverlight和ASP.NET之间共享通用DAL

时间:2010-10-05 07:00:12

标签: asp.net wpf silverlight data-access-layer sharing

在WPF,Silverlight和ASP.NET之间共享相同数据访问层的最佳方法/技术是什么?

我正在使用ADO.NET Entity框架,并且正在考虑使用Repository模式创建DAL。然后使用RIA Services作为虚拟中间人来连接Silverlight和ASP.NET。这是一个可靠的计划,还是有其他更好的解决方案?

2 个答案:

答案 0 :(得分:2)

我喜欢使用的解决方案之一如下: - 让一个项目只存储实体(例如:Player,Game,Entity),根本不存在对数据库的引用。 - 有一个实现存储库模式的项目(存储库,存储库等......) - 使用ADO.NET实体框架代码第一种方法与数据库进行映射(它在您的项目中创建实体包含的动态子对象,请参阅ScottGu的博客,了解如何使用它)

可以使用Ria Services或经典WCF服务将Silverlight连接到您的模式。通常我会尝试尽可能使用WCF,因为Ria Services并不真正符合MVVM开发。

如果要使用WCF并与Silverlight共享DAL实体,可以创建MyDal.Silverlight Silverlight类库项目并添加符号链接,而不是要与Silverlight共享的每个实体的副本。然后,当您使用visual studio添加服务引用时,它将非常智能,无法为您的Silverlight项目创建播放器,游戏和用户的副本。

如果您想使用Ria Services,它会创建您实体的副本。

希望有所帮助

约翰

答案 1 :(得分:1)

RIA服务

RIA服务肯定会减轻您对所有WCF管道的负担。它有一些小缺陷(缺少某些数据类型),但大多数问题都有解决方法。

验证模型(使用属性修饰和自定义验证器)非常强大,是挂起业务规则的好地方。

RIA与ASP.Net共存,这是另一个好处。在幕后它只是另一个WCF服务。我们很高兴地使用MVVM Prism的RIA服务。

ADO.Net EF模​​型

这是经过验证的功能丰富的模型。我发现的唯一问题与多对多关系有关。还有一些解决方法。

DAL

由于RIA变更集是针对您管理的,包括POCO,因此这是需要最多关注的领域。将您的EF模型直接暴露给RIA被认为是“不好”,这肯定不会使您免于数据更改。

我还不能特别推荐任何一种模式(仍在试验),但请确保您的选择与IQueryable兼容。分页功能和附加到Linq查询以进行服务器端执行是您不想丢失的功能!