博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Silverlight WCF RIA服务(九)Domain Service 2
阅读量:5297 次
发布时间:2019-06-14

本文共 4580 字,大约阅读时间需要 15 分钟。

演练:添加查询方法 查询数据源的方法有时被叫做查询方法。在WCF RIA Services中,查询方法必须以框架承认的方式来定义。此外,只返回一个实体的查询和有可能返回多个实体的查询定义是不同的。 当我们建立一个新的domain service类并在Add New Domain Service Class 对
  

演练:添加查询方法

查询数据源的方法有时被叫做查询方法。在WCF RIA Services中,查询方法必须以框架承认的方式来定义。此外,只返回一个实体的查询和有可能返回多个实体的查询定义是不同的。
当我们建立一个新的domain service类并在Add New Domain Service Class 对话框中指定实体时,RIA Services框架会自动为每一个服务端公开的实体创建一个简单的查询。这个简单的查询方法检索实体的所有数据。这个演练将描述如何添加一个用参数值来过滤结果的复杂查询方法。还描述了如何添加一个返回单个实体和一个实体集合的查询。
添加一个接受参数并返回单一实体的查询方法
 

    1. 打开我们中创建的RIAServicesExample解决方案。
    1. 在服务端,打开从Customer表公开数据的domain Services 类。这个类应该叫做CustmerDomainService。
  1. 添加一个查询方法,这个方法接受一个整数类型的参数并返回符合Customer ID的Customer实体。 如果返回单一实体的方法包含Query属性,必须设置IsComposable为false. 用户不能从客户端指定其他的查询操作。如果这个查询方法满足了作为查询所期望的签名,我们就不必使用[Query]属性。返回值必须是任何实体对象的单一实例。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    [Query(IsComposable=false)]
     
     
     
    public 
    Customer GetCustomersByID(int 
    customerID)
     
     
     
    {
     
     
     
        return 
    this.ObjectContext.Customers.FirstOrDefault(c => c.CustomerID == customerID);
     
     
     
    }
     

 

添加一个接受一个参数并返回一个实体集合的查询方法

    1. 打开从Customer表公开数据的domain service类。名字应为CustomerDomainService。
  1. 添加一个方法,这个方法接受一个字符型参数并返回所有名字以参数开始的客户。这个方法可以返回一个IQueryable<>对象,因为用户可能想从客户端提供额外的查询。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    public 
    IQueryable<CUSTOMER> GetCustomersByLastNameLetter(string 
    startingLastNameLetter)
     
     
     
    {
     
     
     
        return 
    this.ObjectContext.Customers.Where(c => c.LastName.StartsWith(startingLastNameLetter) == true);
     
     
     
    }

在客户端显示这些查询的结果
 

    1. 在客户端打开MainPage.xaml文件。
    1. 添加两个TextBox控件和两个Button控件,这样用过就可以通过ID或名的首字母来过滤。下面的xaml代码显示了DataGrid的完整布局。
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48
      49
      50
      51
      52
      53
      54
      55
      56
      57
      58
      59
      60
      61
      62
      63
      64
      65
      66
      67
      68
      69
      70
      71
      72
      73
      74
      75
      76
      77
      78
      79
      80
      81
      82
      83
      84
      85
      86
      87
      88
      89
      90
      91
      92
      93
      94
      95
      96
      97
      98
      99
      100
      101
      102
      <?XML:NAMESPACE 
      PREFIX = [default] 
      NS 
      ="" 
      /><usercontrol
      class=RIAServicesExample.MainPagexmlns="" 
      data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"
      x=""
      d=""
      mc="" 
      ignorable="d"
      designwidth="400" 
      designheight="300">
       
       
       
       
       
       
       
          <grid 
      name="LayoutRoot" 
      background="White">
       
       
       
              <grid.columndefinitions>
       
       
       
                  <columndefinition></columndefinition>
       
       
       
                  <columndefinition></columndefinition>
       
       
       
              </grid.columndefinitions>
       
       
       
              <grid.rowdefinitions>
       
       
       
                  <rowdefinition 
      height="25"></rowdefinition>
       
       
       
                  <rowdefinition></rowdefinition>
       
       
       
              </grid.rowdefinitions>
       
       
       
              <stackpanel 
      column="0" 
      row="0" 
      orientation="Horizontal">
       
       
       
                  <textblock 
      text="search by id: "></textblock>
       
       
       
                  <textbox 
      name="IDValue" 
      width="50"></textbox>
       
       
       
                  <BUTTON 
      name=IDButton 
      type=submit 
      click="IDButton_Click" 
      content="Submit"></BUTTON>
       
       
       
              </stackpanel>
       
       
       
              <stackpanel 
      column="1" 
      row="0" 
      orientation="Horizontal">
       
       
       
                  <textblock 
      text="search by name: "></textblock>
       
       
       
                  <textbox 
      name="LetterValue" 
      width="30"></textbox>
       
       
       
                  <BUTTON 
      name=LetterButton 
      type=submit 
      click="LetterButton_Click"
      content="Submit"></BUTTON>
       
       
       
              </stackpanel>
       
       
       
       
       
       
       
            <?xml:namespace 
      prefix 
      data 
      ns 
      "" 
      /><data:datagrid 
      name="CustomerGrid" 
      column="0" 
      row="1" 
      columnspan="2"></data:datagrid>
       
       
       
          </grid>
       
       
       
      </usercontrol>
       
    1. 打开MainPage.xaml的代码文件。
    1. 添加代码来根据用户的输入来检索数据。
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48
      49
      50
      51
      52
      53
      54
      55
      56
      57
      58
      59
      60
      61
      62
      63
      64
      65
      66
      67
      68
      69
      70
      71
      72
      73
      74
      75
      76
      77
      78
      79
      80
      81
      82
      83
      84
      85
      86
      87
      88
      89
      90
      91
      92
      93
      94
      95
      96
      97
      98
      99
      100
      101
      102
      103
      104
      105
      106
      107
      108
      109
      110
      111
      112
      113
      114
      115
      116
      117
      118
      119
      120
      121
      122
      123
      124
      125
      126
      127
      128
      129
      130
      public 
      partial 
      class 
      MainPage : UserControl
       
       
       
      {
       
       
       
          private 
      CustomerDomainContext _customerContext = new 
      CustomerDomainContext();
       
       
       
       
       
       
       
          public 
      MainPage()
       
       
       
          {
       
       
       
              InitializeComponent();
       
       
       
          }
       
       
       
       
       
       
       
          private 
      void 
      LetterButton_Click(object 
      sender, RoutedEventArgs e)
       
       
       
          {
       
       
       
              IDButton.IsEnabled = false;
       
       
       
              LetterButton.IsEnabled = false;
       
       
       
              LoadOperation<?XML:NAMESPACE PREFIX = [default] http://schemas.microsoft.com/winfx/2006/xaml/presentation NS = "" /><customer> loadOp = this._customerContext.Load(this._customerContext.GetCustomersByLastNameLetterQuery(LetterValue.Text), CustomerLoadedCallback, null);
       
       
       
              CustomerGrid.ItemsSource = loadOp.Entities;
       
       
       
          }
       
       
       
       
       
       
       
          private 
      void 
      IDButton_Click(object 
      sender, RoutedEventArgs e)
       
       
       
          {
       
       
       
              IDButton.IsEnabled = false;
       
       
       
              LetterButton.IsEnabled = false;
       
       
       
              LoadOperation<customer> loadOp =this._customerContext.Load(this._customerContext.GetCustomersByIDQuery(int.Parse(IDValue.Text)), CustomerLoadedCallback, null);
       
       
       
              CustomerGrid.ItemsSource = loadOp.Entities;
       
       
       
          }
       
       
       
       
       
       
       
          void 
      CustomerLoadedCallback(LoadOperation<customer> loadOperation)
       
       
       
          {
       
       
       
              IDButton.IsEnabled = true;
       
       
       
              LetterButton.IsEnabled = true;
       
       
       
          }
       
       
       
       
       
       
       
      }
       
  1. 运行解决方案。将会看到如下结果

转载于:https://www.cnblogs.com/Areas/archive/2011/09/09/2172159.html

你可能感兴趣的文章
UEditor 在 Layer 模态框中无法使用问题
查看>>
【vue】如何引用外部cdn资源
查看>>
BBS-评论功能
查看>>
这又是一个测试
查看>>
Github入门操作实录
查看>>
生成300道小学四则运算题
查看>>
Windows怎么从命令行下载文件
查看>>
Chrome 及其 插件“个性化设置”备份
查看>>
第二章ARP——地址解析协议
查看>>
BIO模型
查看>>
前端开发 --- CSS参考手册
查看>>
认识迅雷界面引擎
查看>>
/* 搜索文件的method */
查看>>
Pandas_实现数字顺序填充、指定值交替填充、日期顺序填充(按日、月、年)
查看>>
第八章博客
查看>>
解决input为number类型时maxlength无效的问题
查看>>
使用C#加密及解密字符串
查看>>
MYSQL 5.7 新增150多个新功能
查看>>
UE导航系统详
查看>>
软件测试作业3
查看>>