奋斗的博客

开源、创新!

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

    这次将完成最后一个自定义属性功能Column,在讲Column实现之前先看看Student表的结构如下:

create table student
(
  studentid   VARCHAR2(40),
  studentno   VARCHAR2(40),
  name        VARCHAR2(40),
  address     VARCHAR2(40),
  telphone    VARCHAR2(40)
)

然后来看看Column自定义属性的具体用法代码1-1:

using System;
using System.Data;
using System.Collections.Generic;
using System.Text;
using System.Orm.CustomAttributes;

namespace Entity
{
    [Serializable]
    [Table(Name="Student")]
    public class StudentEntity
    {
        private string stuid;               
        private string stuno;
        private string name;
        private int sex;
        private int age;
        private string address;
        private string telphone;

        [Id(Name=”studentid”,Strategy = GenerationType.INDENTITY)]
        public string Stuid
        {
            get { return stuid; }
            set { stuid = value; }
        }

        [Column(Name="studentno")]
        public string Stuno
        {
            get { return stuno; }
            set { stuno = value; }
        }
        
        public string Name
        {
            get { return name; }
            set { name = value; }
        }

        [Column(IsInsert = false,IsUpdate = false)]
        public int Sex
        {
            get { return sex; }
            set { sex = value; }
        }

        [Column(IsInsert = false, IsUpdate = false)]
        public int Age
        {
            get { return age; }
            set { age = value; }
        }
              
        public string Address
        {
            get { return address; }
            set { address = value; }
        }
        
        public string Telphone
        {
            get { return telphone; }
            set { telphone = value; }
        }
    }
}

    在上面StudentEntity实体类的属性上配置了映射关系,对于TableId自定义属性的配置前面已经讲述过了,这里不再罗嗦,主要讲Column如何配置。

    [Column(Name="studentid")] 这个配置加在属性public string Stuid { get …… } 上面,意思是该属性对应Student表中的studentid这一列。

    而在public string Name{get…}上却没有配置,那么程序会认为属性名称Name和Student表中的列名一样,无需另外进行映射,顾Student表中也有Name这个列名。

    [Column(IsInsert = false,IsUpdate = false)] 这里没有设置Column的Name的值,而是IsInsert和IsUpdate的值,意思是i该属性值不需要插入到数据库中,我们在做IsInsert和IsUpdate操作的时候可以对它进行忽略不处理。

    下面看看Column自定义属性类的实现代码1-2:

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

namespace System.Orm.CustomAttributes
{
    [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, 
        AllowMultiple = false, Inherited = false)]
    public class ColumnAttribute : Attribute
    {
        private string _Name = string.Empty; //列名
         private bool _IsUnique = false; //是否唯一
         private bool _IsNull = true; //是否允许为空
         private bool _IsInsert = true; //是否插入到表中
         private bool _IsUpdate = true; //是否修改到表中

         public ColumnAttribute() { }

        public string Name
        {
          get { return _Name ; }
          set { _Name = value; }
        }
        public bool IsUnique
        {
          get { return _IsUnique; }
          set { _IsUnique = value; }
        }
        public bool IsNull
        {
          get { return _IsNull; }
          set { _IsNull = value; }
        }
        public bool IsInsert
        {
          get { return _IsInsert; }
          set { _IsInsert = value; }
        }
        public bool IsUpdate
        {
          get { return _IsUpdate; }
          set { _IsUpdate = value; }
        }
    }
}

    到此为止,自定义属性都已经完成,以后要讲的是根据实体类的配置实现增、删、改、查等功能。

posted on 2010-06-28 22:13  奋斗  阅读(3149)  评论(22编辑  收藏  举报