.NET RIA服务 - 使用自定义数据层

时间:2009-12-28 06:47:43

标签: .net silverlight entity-framework wcf-ria-services

有一个与业务逻辑层(BLL)配合使用的Web应用程序。 BLL从数据访问层(DAL)获取数据。 DAL从DB获取数据并执行自定义映射。

目前需要在Web应用程序中添加一些基于Silverlight的功能。计划为此目的使用.NET RIA服务。

在演示视频(http://silverlight.net/learn/videos/all/net-ria-services-intro/)中,有很好的解释:

  1. 创建实体数据 模型(例如使用EF);
  2. 创建域名服务 使用早期的创建数据模型 数据上下文。
  3. 我想很清楚,在我的情况下将EF用作数据上下文开始不是一个好主意:这种方法需要使用DB数据直接跳过DAL和BLL逻辑。


    你能告诉我们:

    1. 在我的网站上获取SilverLight功能的更好方法是:使用RIA服务或更好地跳过RIA服务,实现自己提供数据的WebService,直接使用SilverLight应用程序中的WS)?
    2. 如果我们仍然要使用RIA,如何创建将BLL用作数据源的数据上下文?
    3. 欢迎任何其他想法或想法。

      感谢。

2 个答案:

答案 0 :(得分:3)

RIA服务未与实体框架相关联。您可以使用任何DAL,包括您自己的DAL。

具体而言,不是从LinqToEntitiesDomainService派生,而是从DomainService派生。您可以编写查询,插入,更新,删除方法(取决于您需要的方法),并在其实现中调用DAL。

实体类型可以是POCO类型 - 他们至少需要的是一个或多个标记为[Key]的成员。

这应该足以让你入门。

根据您的情况,这可能就足够了。如果你有一个更复杂的DAL,你甚至可以创建一个为你的DAL定制的DomainService基类。这样做的一些原因: 1.想要提供PersistChangeSet的DAL特定实现(为DAL提交一堆更改) 2.想要将特定于DAL的元数据转换为与DAL无关的元数据。假设您有一种特定于DAL的方式来识别什么是关键成员,关联成员等,并且您希望将DAL元数据转换为等效的[Key],[Association]等元数据。

希望这有帮助。

答案 1 :(得分:0)

感谢您提供此信息。我已经使用ASP.NET服务器应用程序中的RIA服务在Silverlight 4中使用我的自定义实体。

我在DataCotract中使用了KeyAttribute,但是,我有现有的DTO(或DataContracts)对象,这些对象没有Key属性。

这是否意味着我将不得不改变那些现有的DTO?是否有其他方法可以使用现有的DTO?

Asif Ashrafi