简单的ORM
        
        简单的ORM例子。
    
自定义属性:

 自定义属性
自定义属性
1 using System;
using System;
2 using System.ComponentModel;
using System.ComponentModel;
3
4 namespace Relaction.ORM
namespace Relaction.ORM
5

 {
{
6
 /**//// <summary>
    /**//// <summary>
7 ///
    /// 
8 /// </summary>
    /// </summary>
9 ///
    /// 
10 [AttributeUsage(AttributeTargets.Property,Inherited = false,AllowMultiple = false)]
    [AttributeUsage(AttributeTargets.Property,Inherited = false,AllowMultiple = false)]
11 public class ColumnAttribute:Attribute
    public class ColumnAttribute:Attribute
12
 
     {
{
13 private string _columnName = null;
        private string _columnName = null;
14 public string ColumnName
        public string ColumnName
15
 
         {
{
16 get
            get
17
 
             {
{
18 return _columnName;
                return _columnName;
19 }
            }
20 }
        }
21
22 public ColumnAttribute(string columnName)
        public ColumnAttribute(string columnName)
23
 
         {
{
24 _columnName = columnName;
            _columnName = columnName;
25 }
        }
26 }
    }
27 }
}
28 
实体类:

 实体类,并添加上相应属性
实体类,并添加上相应属性
1 using System;
using System;
2
3 namespace Relaction.ORM
namespace Relaction.ORM
4

 {
{
5
 /**//// <summary>
    /**//// <summary>
6 ///
    /// 
7 /// </summary>
    /// </summary>
8 public class Customer
    public class Customer
9
 
     {
{
10 private string _customerID,_companyName,_contactName;
        private string _customerID,_companyName,_contactName;
11 [Column("CustomerID")]
        [Column("CustomerID")]
12 public string CustomerID
        public string CustomerID
13
 
         {
{
14 get
            get
15
 
             {
{
16 return _customerID;
                return _customerID;
17 }
            }
18 set
            set
19
 
             {
{
20 _customerID = value;
                _customerID = value;
21 }
            }
22
23 }
        }
24 [Column("CompanyName")]
        [Column("CompanyName")]
25 public string CompanyName
        public string CompanyName
26
 
         {
{
27 get
            get
28
 
             {
{
29 return _companyName;
                return _companyName;
30 }
            }
31 set
            set
32
 
             {
{
33 _companyName = value;
                _companyName = value;
34 }
            }
35 }
        }
36 [Column("ContactName")]
        [Column("ContactName")]
37 public string ContactName
        public string ContactName
38
 
         {
{
39 get
            get
40
 
             {
{
41 return _contactName;
                return _contactName;
42 }
            }
43 set
            set
44
 
             {
{
45 _contactName = value;
                _contactName = value;
46 }
            }
47 }
        }
48 public Customer()
        public Customer()
49
 
         {
{
50 }
        }
51 }
    }
52 }
}
53 
简单的ORM Helper

 ORM Helper
ORM Helper
1 using System;
using System;
2
3 using System.Collections;
using System.Collections;
4 using System.ComponentModel;
using System.ComponentModel;
5 using System.Reflection;
using System.Reflection;
6 using System.Data;
using System.Data;
7 using System.Data.Common;
using System.Data.Common;
8
9 namespace Relaction.ORM
namespace Relaction.ORM
10

 {
{
11
 /**//// <summary>
    /**//// <summary>
12 ///
    /// 
13 /// </summary>
    /// </summary>
14 public class FillHelper
    public class FillHelper
15
 
     {
{
16 public static IList Fill(Type rowType,IDataReader reader)
        public static IList Fill(Type rowType,IDataReader reader)
17
 
         {
{
18 ArrayList dataList = new ArrayList();
            ArrayList dataList = new ArrayList();
19 while(reader.Read())
            while(reader.Read())
20
 
             {
{
21 object item = Activator.CreateInstance(rowType,false);
                object item = Activator.CreateInstance(rowType,false);
22 foreach(MemberInfo mi in rowType.GetMembers())
                foreach(MemberInfo mi in rowType.GetMembers())
23
 
                 {
{
24 foreach(ColumnAttribute attr in mi.GetCustomAttributes(typeof(ColumnAttribute),false))
                    foreach(ColumnAttribute attr in mi.GetCustomAttributes(typeof(ColumnAttribute),false))
25
 
                     {
{
26 int index = reader.GetOrdinal(attr.ColumnName);
                        int index = reader.GetOrdinal(attr.ColumnName);
27 if(index != -1 )
                        if(index != -1 )
28
 
                         {
{
29 if(mi.MemberType == MemberTypes.Field)
                            if(mi.MemberType == MemberTypes.Field)
30 ((FieldInfo)mi).SetValue(item,reader.GetValue(index));
                                ((FieldInfo)mi).SetValue(item,reader.GetValue(index));
31 else
                            else
32 if(mi.MemberType == MemberTypes.Property)
                                if(mi.MemberType == MemberTypes.Property)
33 ((PropertyInfo)mi).SetValue(item,reader.GetValue(index),null);
                                    ((PropertyInfo)mi).SetValue(item,reader.GetValue(index),null);
34 }
                        }
35 }
                    }
36 }
                } 
37 dataList.Add(item);
                dataList.Add(item);
38 }
            }
39 return dataList;
            return dataList;
40 }
        }
41 public FillHelper()
        public FillHelper()
42
 
         {
{
43 }
        }
44 }
    }
45 }
}
46 

 自定义属性
自定义属性1
 using System;
using System;2
 using System.ComponentModel;
using System.ComponentModel;3

4
 namespace Relaction.ORM
namespace Relaction.ORM5


 {
{6

 /**//// <summary>
    /**//// <summary>7
 ///
    /// 8
 /// </summary>
    /// </summary>9
 ///
    /// 10
 [AttributeUsage(AttributeTargets.Property,Inherited = false,AllowMultiple = false)]
    [AttributeUsage(AttributeTargets.Property,Inherited = false,AllowMultiple = false)]11
 public class ColumnAttribute:Attribute
    public class ColumnAttribute:Attribute12

 
     {
{13
 private string _columnName = null;
        private string _columnName = null;14
 public string ColumnName
        public string ColumnName15

 
         {
{16
 get
            get17

 
             {
{18
 return _columnName;
                return _columnName;19
 }
            }20
 }
        }21

22
 public ColumnAttribute(string columnName)
        public ColumnAttribute(string columnName)23

 
         {
{24
 _columnName = columnName;
            _columnName = columnName;25
 }
        }26
 }
    }27
 }
}28

实体类:

 实体类,并添加上相应属性
实体类,并添加上相应属性1
 using System;
using System;2

3
 namespace Relaction.ORM
namespace Relaction.ORM4


 {
{5

 /**//// <summary>
    /**//// <summary>6
 ///
    /// 7
 /// </summary>
    /// </summary>8
 public class Customer
    public class Customer9

 
     {
{10
 private string _customerID,_companyName,_contactName;
        private string _customerID,_companyName,_contactName;11
 [Column("CustomerID")]
        [Column("CustomerID")]12
 public string CustomerID
        public string CustomerID13

 
         {
{14
 get
            get15

 
             {
{16
 return _customerID;
                return _customerID;17
 }
            }18
 set
            set19

 
             {
{20
 _customerID = value;
                _customerID = value;21
 }
            }22

23
 }
        }24
 [Column("CompanyName")]
        [Column("CompanyName")]25
 public string CompanyName
        public string CompanyName26

 
         {
{27
 get
            get28

 
             {
{29
 return _companyName;
                return _companyName;30
 }
            }31
 set
            set32

 
             {
{33
 _companyName = value;
                _companyName = value;34
 }
            }35
 }
        }36
 [Column("ContactName")]
        [Column("ContactName")]37
 public string ContactName
        public string ContactName38

 
         {
{39
 get
            get40

 
             {
{41
 return _contactName;
                return _contactName;42
 }
            }43
 set
            set44

 
             {
{45
 _contactName = value;
                _contactName = value;46
 }
            }47
 }
        }48
 public Customer()
        public Customer()49

 
         {
{50
 }
        }51
 }
    }52
 }
}53

简单的ORM Helper

 ORM Helper
ORM Helper1
 using System;
using System;2

3
 using System.Collections;
using System.Collections;4
 using System.ComponentModel;
using System.ComponentModel;5
 using System.Reflection;
using System.Reflection;6
 using System.Data;
using System.Data;7
 using System.Data.Common;
using System.Data.Common;8

9
 namespace Relaction.ORM
namespace Relaction.ORM10


 {
{11

 /**//// <summary>
    /**//// <summary>12
 ///
    /// 13
 /// </summary>
    /// </summary>14
 public class FillHelper
    public class FillHelper15

 
     {
{16
 public static IList Fill(Type rowType,IDataReader reader)
        public static IList Fill(Type rowType,IDataReader reader)17

 
         {
{18
 ArrayList dataList = new ArrayList();
            ArrayList dataList = new ArrayList();19
 while(reader.Read())
            while(reader.Read())20

 
             {
{21
 object item = Activator.CreateInstance(rowType,false);
                object item = Activator.CreateInstance(rowType,false);22
 foreach(MemberInfo mi in rowType.GetMembers())
                foreach(MemberInfo mi in rowType.GetMembers())23

 
                 {
{24
 foreach(ColumnAttribute attr in mi.GetCustomAttributes(typeof(ColumnAttribute),false))
                    foreach(ColumnAttribute attr in mi.GetCustomAttributes(typeof(ColumnAttribute),false))25

 
                     {
{26
 int index = reader.GetOrdinal(attr.ColumnName);
                        int index = reader.GetOrdinal(attr.ColumnName);27
 if(index != -1 )
                        if(index != -1 )28

 
                         {
{29
 if(mi.MemberType == MemberTypes.Field)
                            if(mi.MemberType == MemberTypes.Field)30
 ((FieldInfo)mi).SetValue(item,reader.GetValue(index));
                                ((FieldInfo)mi).SetValue(item,reader.GetValue(index));31
 else
                            else32
 if(mi.MemberType == MemberTypes.Property)
                                if(mi.MemberType == MemberTypes.Property)33
 ((PropertyInfo)mi).SetValue(item,reader.GetValue(index),null);
                                    ((PropertyInfo)mi).SetValue(item,reader.GetValue(index),null);34
 }
                        }35
 }
                    }36
 }
                } 37
 dataList.Add(item);
                dataList.Add(item);38
 }
            }39
 return dataList;
            return dataList;40
 }
        }41
 public FillHelper()
        public FillHelper()42

 
         {
{43
 }
        }44
 }
    }45
 }
}46

.jpg) 
  
 
                    
                     
                    
                 
                    
                
 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号