3

我想用 SP 加载一些数据。

我已经在 Linq to SQL 类中放置了一个 SP,但我不知道如何使用它在数据网格中加载它的数据。在 LinqToSqlDomainService 中,我不知道如何调用 SP。我应该使用什么步骤。

这有什么样品吗?所有样本都使用表格。

谢谢

4

4 回答 4

2

我在此站点上找到了以下出色的分步指南-

http://betaforums.silverlight.net/forums/p/218383/521023.aspx

1) 为您的 Web 项目添加一个 ADO 实体数据模型;选择从数据库选项生成;选择要连接的数据库实例。

2) 选择要导入模型的数据库对象。您可以展开表节点以选择要导入模型的任何表。展开存储过程节点以选择您的存储过程。单击完成以完成导入。

3)右键单击数据库模型设计器以选择添加/功能导入。为函数命名(与您的 SP 相同的名称即可)并选择您要映射的存储过程。如果您的 SP 只返回一个字段,您可以将返回结果映射到一组标量。如果您的 SP 返回多个字段,您可以将返回结果映射到集合或实体(如果所有字段都来自单个表)或复杂类型的集合。

如果您想使用复杂类型,您可以单击获取列按钮以获取您的 SP 的所有列。然后单击 Create new Complex type 按钮以创建此 Complex 类型。

4) 将域服务类添加到 Web 项目。选择您刚刚创建的 DataModel 作为此 Service 的 DataContext。选择要向客户公开的所有实体。应该为这些实体生成服务功能。

5) 您可能在实体列表中看不到复杂类型。您必须在服务中为您的 SP 手动添加查询功能:假设您的 SP 称为 SP1,您生成的复杂类型称为 SP1_Result。

在您的域服务类中添加以下代码:

public IQueryable<SP1_Result> SP1()
    {
        return this.ObjectContext.SP1().AsQueryable();            
    }

现在你可以编译你的项目了。您可能会收到如下错误:“SP1_Result 没有密钥”(如果您未使用 RIA 服务 SP1 beta)。如果这样做,则需要在服务元数据文件中执行以下操作:

添加了 SP1_Result 元数据类并标记了 Key 字段:

[MetadataTypeAttribute(typeof(SP1_Result.SP1_ResultMetadata))]
public partial class SP1_Result
{
    internal sealed class SP1_ResultMetadata
    {
        [Key]
        public int MyId;  // Change MyId to the ID field of your SP_Result
    }
} 

6)编译你的解决方案。现在您已将 SP1_Result 暴露给客户端。检查生成的文件,您应该看到 SP1_Result 作为实体类生成。现在,您可以在 Silverlight 代码中访问 DomainContext.SP1Query 和 DomainContext.SP1_Results。您可以像对待任何其他实体(映射到表的实体)类一样对待它。

于 2011-02-07T22:30:51.120 回答
2

这篇文章应该会有所帮助:http: //blogs.msdn.com/brada/archive/2009/08/24/business-apps-example-for-silverlight-3-rtm-and-net-ria-services- 7 月更新部分 24 存储过程.aspx

于 2009-08-25T19:00:08.617 回答
2

您可以使用与存储过程相同的结构创建空视图,并将该存储过程映射到 DomainService 中的函数参见http://cid-289eaf995528b9fd.skydrive.live.com/self.aspx/Public/sproc.zip上的示例

于 2009-09-25T01:27:36.277 回答
0

调用存储过程很简单。将其作为函数导入,然后作为 DDS 的成员调用该函数。返回值是一个 ObservableCollection<>,您可以使用它来设置要绑定的对象的 DataContext。

...除非您想通过魔术代码生成的代理在 Silverlight RIA 应用程序中使用它,在这种情况下,除非您的结果行与实体之一完全匹配,否则您的鹅是熟的。如果您可以满足该标准,请编辑 DomainService 类并显示一个包装 ObjectContext 方法的方法。

于 2010-01-30T03:45:35.850 回答