locked
关于Ria Service DomainService RRS feed

  • 问题

  • 我整合一个逻辑类结构在一个工程里面,
      现在写 Ria Service  服务端,可是有些类就是不能在客户端看的到,
      比如:
        <EnableClientAccess()> _
    Public Class TDBService
        Inherits DomainService

        '<System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1822:MarkMembersAsStatic")> _
        Public Function GetDataBy(ByVal pModeGuid As String, ByVal pConfig As String) As String
            Return ""
        End Function

        Public Function GetTdataTable(ByVal pSQl As String) As TDataTable

            Return New TDataTable
        End Function
       End Class

    其中:TDataTable

    Public Class TDataTable

        ''' <summary>
        ''' 表中的列方案
         <DataMemberAttribute()> _
        Public ReadOnly Property ColScheme As TFields
            Get
                Return _TableScheme.Fields
            End Get
        End Property

     <DataMember()> _
        Public Property DataRows() As TDataRows
            Get
                If _DataRows Is Nothing Then
                    _DataRows = New TDataRows(TableScheme.Fields)
                End If
                Return _DataRows
            End Get
            Set(ByVal value As TDataRows)
                _DataRows = value
            End Set
        End Property

    <Key()> _
        Public Property Name_() As String
            Get
                If String.IsNullOrEmpty(_Name) Then _Name = _MainTableName
                Return _Name
            End Get
            Set(ByVal value As String)
                _Name = value
            End Set
        End Property
    End Class

    在这种情况下,客户端 没有自动生成 TFields TDataRows 类
     很是不解,请赐教

    2009年12月28日 6:43

答案

  • Hi,

       你好, 你想要在客户端用TDataTable和TFields类的话, 需要在你的TDBService中添加对这2种类的操作.
     
       如:
       public TFields FieldsToUse(){ return  null;}
       public TDataRow RowToUse(){ return  null;} 
     
       这样你就可以在SL项目里使用这2个class type了
    2009年12月29日 6:01
  • 你好,
      
          Key,属性是为了能够在操作中唯一的标识某entity的instance. 
           
          可以转化阿. 
       
          在ria中有list的话一般表示外键关系,要用[Association]标明就可以了.
       
          public class MyTable{
                [Key]
                public int ID{get;set;}
                [Association("MyTableForeignRelation","ID","ID")]
                public List<Row> Rows{get;set;}
          }
       
          public class Row{
                [Key]
                public int ID{get;set;}
                public string content{get;set;}
         }
         大概就是这样子,在客户端就可以用 MyTableObject.Rows了,它被转化成了一个EntityCollection<T>
         

    2009年12月30日 2:25

全部回复

  • 象这样的 TDBService 里 包含 TDataTable

     
    TDataTable   又包含 TFields  , TDataRows 的怎么标记。
    客户端才会自动生成  TFields  , TDataRows  类 呀????
    2009年12月28日 7:04
  • Ria Service 到 客户端 的  类型转换 中 不 支持

      list(of  T )  和 Object ???
    2009年12月28日 9:04
  • Hi,

       你好, 你想要在客户端用TDataTable和TFields类的话, 需要在你的TDBService中添加对这2种类的操作.
     
       如:
       public TFields FieldsToUse(){ return  null;}
       public TDataRow RowToUse(){ return  null;} 
     
       这样你就可以在SL项目里使用这2个class type了
    2009年12月29日 6:01
  • 你说的没有错,这样客户端就有了类TDataTableTFields, 但是还有一个问题。

    其属性一定要有 [Key] 为什么?
      List<of T >的类型的属性 ,原来在WCF中能传化到客户端;当前却不能 为什么? 

    2009年12月30日 1:36
  • 你好,
      
          Key,属性是为了能够在操作中唯一的标识某entity的instance. 
           
          可以转化阿. 
       
          在ria中有list的话一般表示外键关系,要用[Association]标明就可以了.
       
          public class MyTable{
                [Key]
                public int ID{get;set;}
                [Association("MyTableForeignRelation","ID","ID")]
                public List<Row> Rows{get;set;}
          }
       
          public class Row{
                [Key]
                public int ID{get;set;}
                public string content{get;set;}
         }
         大概就是这样子,在客户端就可以用 MyTableObject.Rows了,它被转化成了一个EntityCollection<T>
         

    2009年12月30日 2:25