牛骨文教育服务平台(让学习变的简单)

3)数据行DynamicDataRow.cs

using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Text;
namespace MEntities  
{  
   [Serializable]  
   public partial class DynamicDataRow  
   {  
       public List<DynamicDataField> DataFields { get; private set; }  
       public DynamicDataRow()  
       {  
           DataFields = new List<DynamicDataField>();  
       }  
   }  
     
}

共享代码部分:DynamicDataRow.Shared.cs


using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Text;

namespace MEntities  
{  
   public partial class DynamicDataRow  
   {  
       public DynamicDataField this[string FieldName]  
       {  
           get  
           {  
               DynamicDataField theField = null;  
               foreach (var fld in DataFields)  
               {  
                   if (fld.FieldName == FieldName)  
                   {  
                       theField = fld;  
                       break;  
                   }  
               }  
               return theField;  
           }  
       }  
       public DynamicDataField this[int Index]  
       {  
           get  
           {  
               return DataFields[Index];  
           }  
       }  
   }  
     
}  

4)数据表:

using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Text;

namespace MEntities  
{  
   [Serializable]  
   public partial class DynamicDataTable  
   {  
       public List<DynamicDataRow> Rows { get; private set; }  
       public string TableName { get; set; }  
       public List<DynamicDataColumn> Columns { get; private set; }  
       public DynamicDataTable()  
       {  
           Rows = new List<DynamicDataRow>();  
           Columns = new List<DynamicDataColumn>();  
       }  
   }  
}  

数据表共享代码部分:DynamicDataTable.Shared.cs


using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Text;

namespace MEntities  
{  
   public partial class DynamicDataTable  
   {  
       public DynamicDataColumn this[string FieldName]  
       {  
           get  
           {  
               DynamicDataColumn theCol = null;  
               foreach (var col in Columns)  
               {  
                   if (col.FieldName == FieldName)  
                   {  
                       theCol = col;  
                       break;  
                   }  
               }  
               return theCol;  
           }  
       }  
       public DynamicDataColumn this[int Index]  
       {  
           get  
           {  
               return Columns[Index];  
           }  
       }  
   }  
}  

实体的组织原则:

A)尽可能简单,外部程序集依赖应尽可能少,这样任何其它层都可以引用它,也便于穿越通信层,毕竟实体只是数据的载体;
B)索引器无法自动到达客户端,索引器构建主要是为了客户端绑定的时候提供一致的语法和语义;
C)如果实体有继承体系,那么索引器可能无法共享到客户端,这个时候可以直接把代码添加到客户端中即可,注意命名空间要保持与服务器一致。