Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
Ϊ³õѧÕßдORM£¬ORMµÄÔ­Àí¼°²âÊÔ°¸Àý
 
×÷ÕߣºÀÌÎ À´Ô´£º²©¿ÍÔ° ·¢²¼ÓÚ 2015-04-22
  5676  次浏览      51
 

Ò» ¡¢Ê²Ã´ÊÇORM£¿

¸ÅÄ ¶ÔÏó¹ØÏµÓ³É䣨Object Relational Mapping£¬¼ò³ÆORM£¬»òO/RM£¬»òO/R mapping£©£¬ÊÇÒ»ÖÖ³ÌÐò¼¼Êõ£¬ÓÃÓÚʵÏÖÃæÏò¶ÔÏó±à³ÌÓïÑÔÀﲻͬÀàÐÍϵͳµÄÊý¾ÝÖ®¼äµÄת»»¡£

Ïêϸ½éÉÜ£º ÈÃÎÒÃÇ´ÓO/R¿ªÊ¼¡£×ÖĸOÆðÔ´ÓÚ"¶ÔÏó"(Object),¶øRÔòÀ´×ÔÓÚ"¹ØÏµ"(Relational)¡£¼¸ºõËùÓеijÌÐòÀïÃæ£¬¶¼´æÔÚ¶ÔÏóºÍ¹ØÏµÊý¾Ý¿â¡£ÔÚÒµÎñÂß¼­²ãºÍÓû§½çÃæ²ãÖУ¬ÎÒÃÇÊÇÃæÏò¶ÔÏóµÄ¡£µ±¶ÔÏóÐÅÏ¢·¢Éú±ä»¯µÄʱºò£¬ÎÒÃÇÐèÒª°Ñ¶ÔÏóµÄÐÅÏ¢±£´æÔÚ¹ØÏµÊý¾Ý¿âÖС£

µ±Ä㿪·¢Ò»¸öÓ¦ÓóÌÐòµÄʱºò(²»Ê¹ÓÃO/R Mapping),Äã¿ÉÄÜ»áд²»ÉÙÊý¾Ý·ÃÎʲãµÄ´úÂ룬ÓÃÀ´´ÓÊý¾Ý¿â±£´æ£¬É¾³ý£¬¶ÁÈ¡¶ÔÏóÐÅÏ¢£¬µÈµÈ¡£ÄãÔÚDALÖÐдÁ˺ܶàµÄ·½·¨À´¶ÁÈ¡¶ÔÏóÊý¾Ý£¬¸Ä±ä״̬¶ÔÏóµÈµÈÈÎÎñ¡£¶øÕâЩ´úÂëдÆðÀ´×ÜÊÇÖØ¸´µÄ¡£

ORM½â¾öµÄÖ÷ÒªÎÊÌâÊǶÔÏó¹ØÏµµÄÓ³Éä¡£ÓòÄ£Ðͺ͹ØÏµÄ£ÐÍ·Ö±ðÊǽ¨Á¢ÔÚ¸ÅÄîÄ£Ð͵Ļù´¡Éϵġ£ÓòÄ£ÐÍÊÇÃæÏò¶ÔÏóµÄ£¬¶ø¹ØÏµÄ£ÐÍÊÇÃæÏò¹ØÏµµÄ¡£Ò»°ãÇé¿öÏ£¬Ò»¸ö³Ö¾Ã»¯ÀàºÍÒ»¸ö±í¶ÔÓ¦£¬ÀàµÄÿ¸öʵÀý¶ÔÓ¦±íÖеÄÒ»Ìõ¼Ç¼£¬ÀàµÄÿ¸öÊôÐÔ¶ÔÓ¦±íµÄÿ¸ö×ֶΡ£

ORM¼¼ÊõÌØµã£º

1.Ìá¸ßÁË¿ª·¢Ð§ÂÊ¡£ÓÉÓÚORM¿ÉÒÔ×Ô¶¯¶ÔEntity¶ÔÏóÓëÊý¾Ý¿âÖеÄTable½øÐÐ×Ö¶ÎÓëÊôÐÔµÄÓ³É䣬ËùÒÔÎÒÃÇʵ¼Ê¿ÉÄÜÒѾ­²»ÐèÒªÒ»¸öרÓõġ¢ÅÓ´óµÄÊý¾Ý·ÃÎʲ㡣

2.ORMÌṩÁ˶ÔÊý¾Ý¿âµÄÓ³É䣬²»ÓÃsqlÖ±½Ó±àÂ룬Äܹ»Ïñ²Ù×÷¶ÔÏóÒ»Ñù´ÓÊý¾Ý¿â»ñÈ¡Êý¾Ý¡£

¶þ¡¢·´ÉäÒÔ¼°AttributeÔÚORMÖеÄÓ¦Óá£

ʲôÊÇ·´É䣿

¼òµ¥µã°É£¬·´Éä¾ÍÊÇÔÚÔËÐÐʱ¶¯Ì¬»ñÈ¡¶ÔÏóÐÅÏ¢µÄ·½·¨£¬±ÈÈçÔËÐÐʱ֪µÀ¶ÔÏóÓÐÄÄЩÊôÐÔ£¬·½·¨£¬Î¯Íеȵȵȵȡ£

·´ÉäÓÐʲôÓÃÄØ£¿

·´Éä²»µ«ÈÃÄãÔÚÔËÐÐÊÇ»ñÈ¡¶ÔÏóµÄÐÅÏ¢£¬»¹ÌṩÔËÐÐʱ¶¯Ì¬µ÷ÓöÔÏó·½·¨ÒÔ¼°¶¯Ì¬ÉèÖᢻñÈ¡ÊôÐԵȵÄÄÜÁ¦¡£

·´ÉäÔÚORMÖÐÓÐʲôÓÃÄØ£¿

ÎÒ ÕâÀïËùÌÖÂÛµÄORMʵÏÖÊÇͨ¹ý×Ô¶¨ÒåAttributeµÄ·½Ê½½øÐÐÓ³É乿ÔòµÄÃèÊöµÄ¡£µ«ÊÇÎÒÃDz¢²»ÖªµÀ¾ßÌåÄĸö¶ÔÏóÐèÒª¶ÔÓ¦Äĸö±í£¬²¢ÇÒÕâЩ¶ÔÏóÊǶÀÁ¢ÓÚ ÎÒÃǵÄORM¿ò¼ÜµÄ£¬ËùÒÔÎÒÃÇÖ»ÄÜͨ¹ý×Ô¶¨ÒåAttributeÀ´¶¨ÒåÓ³É乿Ôò£¬È»ºóͨ¹ý·´ÉäÀ´¶¯Ì¬»ñÈ¡ÕâЩӳÉ乿Ôò¡£

£¨ÕâÀïÖ»¼òµ¥ËµÃ÷ϸÅÄ¾ßÌåÈçºÎʵÏÖ¹ý³ÌÇë¿´µÚËÄÏî¡££©

Èý¡¢´´½¨Ò»¸öÊý¾Ý¿â±íºÍ±í¶ÔÓ¦µÄʵÌåmodel¡£

´«Í³µÄ´´½¨±íºÍmodelʵÌåµÄ´´½¨¹ý³Ì¡£

1.´´½¨Êý¾Ý¿â±í

create table TB_People

(

     Pl_ID Int identity(1,1) primary key ,       

 

    PL_Age Int,

 

    Pl_Sex Nvarchar(4),

 

     Pl_LoginName nvarchar(30),

 

     Pl_TrueName  nvarchar(30),

 

     PL_Pwd  nvarchar(60)

)

2.¸ù¾Ý±í½á¹¹Ò»°ãÎÒÃǻᴴ½¨ÈçÏÂmodelʵÌå

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace FuzhuKeji

{

    public class M_People

    {

 

        string _Pl_ID;

 

        public string Pl_ID

        {

            get { return _Pl_ID; }

            set { _Pl_ID = value; }

        }

 

        int _PL_Age;

 

        public int PL_Age

        {

            get { return _PL_Age; }

            set { _PL_Age = value; }

        }

 

        string _Pl_Sex;

 

        public string Pl_Sex

        {

            get { return _Pl_Sex; }

            set { _Pl_Sex = value; }

        }

 

        string _Pl_LoginName;

 

        public string Pl_LoginName

        {

            get { return _Pl_LoginName; }

            set { _Pl_LoginName = value; }

        }

 

        string _Pl_TrueName;

 

        public string Pl_TrueName

        {

            get { return _Pl_TrueName; }

            set { _Pl_TrueName = value; }

        }

        string _PL_Pwd;

        public string PL_Pwd

        {

            get { return _PL_Pwd; }

            set { _PL_Pwd = value; }

        }

    }

}

ÏÖÔÚ¿´µ½Á˱í½á¹¹ ºÍmodelʵÌ壬ÄÇÈçºÎ¸ù¾ÝmodelʵÌåÓ³Éä³ö±íµÄ²åÈëÓï¾ä¼°½á¹¹ÄØ£¿ÏÂÃæÎÒÃǾͽéÉÜÓÐmodelÓ³Éäµ½Êý¾Ý¿â±í¡£

ËÄ¡¢ÊµÌåmodelÈçºÎÓ³Éä³öÊý¾Ý¿â±í¡£

ÉÏÃæ¼òµ¥½éÉÜÁË·´ÉäÒÔ¼°AttributeÔÚORMÖеÄÓ¦Óã¬ÄÇÈçºÎͨ¹ýÕâЩ½øÐÐÓ³Éä³öÀ´µÄÄØ£¿

·½·¨Ò»£º

¿´µ½ Ìâ¸ÙÈýÖеÄmodelʵÌåÁË£¬ÏÂÃæÎÒÃǾÍͨ¹ý·´ÉäµÄ·½·¨À´¶¯Ì¬»ñÈ¡´ËÓ³É乿Ôò£º

/// 
        ///  ²âÊÔÓ³Éä
        /// </summary>
        /// <param name="sender"></param>
/// <param name="e"></param> private void button1_Click(object sender, EventArgs e) { M_People mp = new M_People(); mp.PL_Age = 26; mp.Pl_ID = "001"; mp.Pl_LoginName = "Test1"; mp.PL_Pwd = "123"; mp.Pl_Sex = "ÄÐ"; mp.Pl_TrueName = "ÕÅÈý"; PropertyInfo[] infos = mp.GetType().GetProperties(); string Message_shuxing1 = ""; foreach (PropertyInfo info in infos) { //»ñÈ¡ÊôÐÔ²¢´òÓ¡ Message_shuxing1 = Message_shuxing1 + (info.Name + ":" + info.GetValue(mp, null)); } MessageBox.Show("ÕâÀï¿´µ½¿ÉÒÔ»ñµÃÊôÐÔÃû³ÆºÍÊôÐÔÖµ £¨ÊDz»ÊǶÔORMÓеãÂýÂýÃ÷°×ÁË£©£º"+Message_shuxing1); // ÉÏÃæinfo.GetValue(mp, null£©»ñµÃÊôÐÔµÄÖµ¡£ //info.SetValue(mp, "XX", null); ¸³Öµ }

²âÊÔЧ¹ûͼÈçÏ£º

ÊDz»ÊÇÓеã˼·ÁË£¬ÖªµÀÈçºÎ¸ãÁË£¬ºÇºÇ¡£

¿´µ½ºìÉ«²¿·ÖÁËÂð

ÓиоõÁËûÓУºÊDz»ÊǺÍÊý¾Ý¿âµÄÃû³ÆÒ»Ñù£¬¶øÇÒ»¹»ñµÃÁËÖµ¡£ÎªÊ²Ã´»á³öÏÖÕâÖÖÇé¿öÄØ£¿

ÊôÐÔÊÇÀ´ÖÁÄÇ£¿--ModelʵÌå°É£¬ÊôÐÔµÄÃû³ÆÒ²ÊÇmodelʵÌåÊôÐÔÃû³Æ°É¡£ËùÒÔÎÒÃÇÖ»Òª°ÑÊôÐÔµÄÃû³Æ°´Ä³¸ö¹æÔò¶¨Òå¾Í¿ÉÒÔ»ñµÃÆä¶ÔÓ¦µÄÊý¾Ý¿â×Ö¶ÎÃûºÍÀàÐÍ¡£

·½·¨¶þ£º

±¸×¢Ï£ºÆäʵ²»Ö»ÕâÖÖ·½·¨¿ÉÒÔÍê³ÉORMµÄÓ³É䣬¶øÇÒ»¹¿ÉÒÔͨ¹ýAttribute£º

AttributeÖÐÎÄ·­ÒëËäȻҲºÅ³Æ¡°ÊôÐÔ¡±£¬µ«ÊÇËýºÍ¶ÔÏóµÄÊôÐÔ£¨Property£©ÆäʵÊÇÍêÈ«²»Í¬µÄÁ½¸ÅÄî¡£ËýÊÇÔÚÔËÐÐʱ¶Ô¶ÔÏó»òÕß¶ÔÏóÊôÐÔ¡¢·½·¨¡¢Î¯ÍеȵȽøÐÐÃèÊöµÄÀ࣬ÓÃÓÚÔÚÔËÐÐʱÃèÊöÄãµÄ´úÂë»òÕßÔÚÔËÐÐʱӰÏìÄãµÄ³ÌÐòµÄÐÐΪ¡£

Æä ʵÎÒÃÇÔÚc#µÄ±à³ÌÖо­³£¿´µ½Attribute£¬Ö»²»¹ýÎÒÃÇûÓÐ×¢Òâ°ÕÁË¡£±ÈÈçMainº¯ÊýǰµÄ¡°[STAThread]¡±Õâ¸öÆäʵ¾ÍÊÇÒ»¸ö Attribute¡£È«³ÌΪ[STAThreadAttribute]¡£ÁíÍâÖ¸¶¨Àà¿ÉÐòÁл¯µÄ[Serializable]µÈµÈ¡£ÊDz»ÊǶ¼ºÜÊìϤ°¡£¿Ö»²» ¹ýƽʱ¹À¼ÆÃ»ÓÐÓõ½£¬ËùÒÔûÓÐ×¢Òâ°ÕÁË¡£

¼ÈÈ»AttributeÊÇÀ࣬ÄÇôËýµÄ¶¨Òå·½·¨ºÍÀà¾ÍûÓÐÁ½ÑùÁË£¬Î¨Ò»µÄ²»Í¬¾ÍÊÇ×Ô¶¨ÒåAttributeÀà±ØÐë¼Ì³ÐÓÚSystem.Attribute¡£

ÄÇÎÒÃǸÄÏÂM_PeopleʵÌåµÄ¶«Î÷ÈçÏ£º

ÏÂÃæÎÒÃÇÀ´¼òµ¥¶¨ÒåÒ»¸öÃèÊöÊý¾Ý¿â×Ö¶ÎÐÅÏ¢µÄAttribute£¬ÔÚ´ËÀàÖÐÎÒÃDzÉÓøüÊ¡ÂԵķ½Ê½£¬½ö½öÌṩ¡°×Ö¶ÎÃû¡±£¬¡°×Ö¶ÎÀàÐÍ¡±£º

public class DataFieldAttribute : Attribute

    {

        private string _FieldName;

        private string _FieldType;

        public DataFieldAttribute(string fieldname, string fieldtype)

        {

            this._FieldName = fieldname;

            this._FieldType = fieldtype;

        }

        public string FieldName

        {

            get { return this._FieldName; }

            set { this._FieldName = value; }

        }

        public string FieldType

        {

            get { return this._FieldType; }

            set { this._FieldType = value; }

        }

    }

ÄÇÎÒÃǰÑMode¸ü¸ÄϸÄΪÈçÏ£º

public class M_People

    {

 

        string _Pl_ID;

        [DataFieldAttribute("Pl_ID", "Int")]
        public string Pl_ID

        {
            get { return _Pl_ID; }
            set { _Pl_ID = value; }
        }
        int _PL_Age;
        [DataFieldAttribute("PL_Age", "Int")]
        public int PL_Age

        {

            get { return _PL_Age; }
            set { _PL_Age = value; }

        }
        string _Pl_Sex;
        [DataFieldAttribute("Pl_Sex", "nvarchar")]
        public string Pl_Sex
        {
            get { return _Pl_Sex; }
            set { _Pl_Sex = value; }
        }
        string _Pl_LoginName;
        [DataFieldAttribute("Pl_LoginName", "nvarchar")]
        public string Pl_LoginName
        {
            get { return _Pl_LoginName; }

            set { _Pl_LoginName = value; }
        }

        string _Pl_TrueName;

        [DataFieldAttribute("Pl_TrueName", "nvarchar")]

        public string Pl_TrueName

        {

            get { return _Pl_TrueName; }

            set { _Pl_TrueName = value; }

        }

        string _PL_Pwd;

        [DataFieldAttribute("PL_Pwd", "nvarchar")]

        public string PL_Pwd

        {

            get { return _PL_Pwd; }

            set { _PL_Pwd = value; }

        }
    }

ͨ¹ý×Ô¶¨ÒåAttribute£¬ÎÒÃǶ¨ÒåÁËÀàÊôÐÔºÍÊý¾Ý¿â×ֶεÄÒ»Ò»¶ÔÓ¦¹ØÏµ¡£

ÄÇÎÒÃÇͨ¹ýʼþ²âÊÔÏ·½·¨°¸Àý£º

/// 
        /// ·´Éä+Attribute Ó³Éä³öÊý¾Ý¿â±í
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button2_Click(object sender, EventArgs e)
        {
            M_People mp = new M_People();
            mp.PL_Age = 26;
            mp.Pl_ID = "001";
            mp.Pl_LoginName = "Test1";
            mp.PL_Pwd = "123";
            mp.Pl_Sex = "ÄÐ";
            mp.Pl_TrueName = "ÕÅÈý";

            PropertyInfo[] infos = mp.GetType().GetProperties();
            string Str_TestAtrrubute = "";

            object[] objDataFieldAttribute = null;
            foreach (PropertyInfo info in infos)
            {
                objDataFieldAttribute = info.GetCustomAttributes(typeof(DataFieldAttribute), false);
                if (objDataFieldAttribute != null)
                {
                  Str_TestAtrrubute=Str_TestAtrrubute+(info.Name + "->Êý¾Ý¿â×ֶΣº"
 + ((DataFieldAttribute)objDataFieldAttribute[0]).FieldName)+" --------";
                }
            }

            MessageBox.Show(Str_TestAtrrubute);
        }

²âÊÔµÄЧ¹ûͼÈçÏ£º

¹þ¹þ£¬ÄãÊDz»ÊǺÜÏ붯ÊÖÁ˰¡£¿

¼ÓÓÍ£¡ÏÂÃæÎÒÃǾͽéÉÜÈçºÎʵÏÖ²åÈëÓï¾äµÄÓ³É䣡

Îå¡¢×éºÏORMÓ³ÉäÉú³ÉinsertÓï¾ä¡£

ÎÒÃÇ×Ðϸ˼¿¼Ï¿´µ½ÉÏÃæµÄÎÒÃÇ»áÔõôÏë²Å¿ÉÒÔÉú³ÉÒ»ÌõsqlÓï¾ä²¢ÇÒÖ´ÐС£

Ê×ÏÈÎÒÃÇÊDz»ÊÇÓ¦¸Ã·Ö¿ªÁ½²¿·Ö

µÚÒ»²½¸ºÔðÉú³É²åÈëÓï¾ä¡£

µÚ¶þ²½ÊǸºÔðÖ´ÐвåÈëÓï¾äµÃ¡£

ÎÒÃǼÌÐøË¼¿¼£¿Éú³ÉÒ»Ìõ²åÈëÓï¾äÎÒÃÇÒª¿¼ÂÇÄÄЩÎÊÌ⣿

a¡¢ÊDz»ÊÇ·µ»ØÖµ

b¡¢ÊDz»ÊÇÒªÅжϱíÖÐÊÇ·ñÓв»ÐèÒª×éºÏΪ²åÈëÓï¾äµÄ×ֶΣ¨Èç×ÔÔö×ֶΣ©

c¡¢¶øÇÒÕâ¸ö²åÈëÓï¾äÊÇÕë¶Ô¶ÔÏóµÄ²åÈëÓï¾ä¶ø²»Êǹ̶¨µÄij¸ö»òÕßÒÑÖªµÄij¸öʵÌå¡£ËùÒÔÎÒÃǻῼÂǵ½·ºÐ͵ÄʹÓá£

ÕâÑùÎÒÃÇ»ù±¾È·¶¨ÁËinsertÓï¾äµÄ²ÎÊýºÍ½á¹¹¡£

ÎÒÃÇÔٻص½µÚÒ»²½ÈçºÎ¸ù¾ÝʵÌåÉú³É²åÈëÓï¾ä£¿ ÎÒÃǵÚËIJ¿Ò²Ö»ÊÇ˵Á˸ù¾ÝʵÌåÓ³Éä³öºÍÊý¾Ý¿â×Ö¶ÎÒ»ÑùµÄÃû×Ö£¬ÕâÓÐʲôÓÃÄØ£¿

¿Ï¶¨¸ù¾ÝÕâЩ×Ö¶ÎÃûÎÒÃÇÒªÏë°ì·¨×éºÏ¸ösqlÓï¾ä¡£¼ÌÐø·ÖÎö¡¢¡¢¡¢

ÈçºÎ·Ö¹¤ £º¿Ï¶¨Òª¸ø¸öÖ´ÐеÄsqlÓï¾ä

·Ö¹¤Ò»£ºÊDz»ÊÇ»ñµÃÊôÐÔÃû³Æ×éºÏsql¡£

·Ö¹¤¶þ£ºÊDz»ÊÇ×ö¸ö²ÎÊýµÄ¶ÔÓ¦±í¡£

·Ö¹¤Èý£º×éºÏÕâЩ¶«Î÷£¬²¢°ÑÆäÊôÐÔÀàÐͺÍÊý¾Ý¿â×Ö¶ÎÀàÐͶÔÓ¦ÆðÀ´¡£

ÉÏÃæËµÁËÄÇô¶à£¬Ö»Êǰï´ó¼Ò´ò¿ªË¼Â·£¬ÆäʵֻҪÄãÀí½âÁËÓ³É䣨µÚËÄÏ£¬ÓÃ×Ô¼ºµÄ˼·ȥдÄÇЩ×éºÏsqlÒ²¿ÉÒԵã¬

ÎÒÕâ¸öµØ·½Ð´µÄÒ²²»¼ûµÃÍêÃÀ£¬Ö»ÊǸø´ó¼Ò×ö¸öÀý×Ó£¬ºÙºÙ£¬Ò»Æð¼ÓÓÍ£¡

Óм¸¸öµØ·½Óõ½ÁËö¾ÙÊ×ÏÈÎÒÁгöö¾ÙµÄ·½·¨£º

µÚÒ»¸öÊôÐÔ±êʶÊÇ·ñΪÖ÷¼ü»òÕß¶ÁдµÄ±êʶ

[Serializable]

  [Flags]

  public enum ColumnKeyType

  {

      /// 

      /// ĬÈÏ״̬

      /// 

      Default = 1,

 

      /// 

      /// ±êʶΪÖ÷¼ü

      /// 

      Identity = 2,
      /// 

      /// Extend״̬Ï£¬²»²ÎÓë¶ÁÈ¡¡¢Ôö¼Ó¡¢ÐÞ¸Ä

      /// 

      Extend = 4,

 

      /// 

      /// Read״̬ϲ»²ÎÓëÔö¼Ó¡¢ÐÞ¸Ä

      /// 

      Read = 8

  }

 

·µ»ØÖµ×öÁËö¾Ù£º

  public enum DBReturnType

  { /// 

      /// ·µ»ØÊÜÓ°ÏìµÄÐÐÊý

      /// 

      EffectRow,

      /// 

      /// ·µ»Ø×îºó²åÈëµÄÖ÷¼üÖµ

      /// 

      Identity

  }

²åÈëÓï¾äµÄ´úÂ룺

#region °Ñ¶ÔÏóÄÚÈݱ£´æµ½Êý¾Ý¿âÖÐ Insert

      /// 

      /// °Ñ¶ÔÏóÄÚÈݱ£´æµ½Êý¾Ý¿âÖÐ

      /// 

      /// 
      /// <param name="model"></param>

      /// &lt;param name=&quot;isIncludeKeyColumn&quot;&gt;²åÈëÓï¾äÖÐÊÇ·ñ°üº¬¶ÔÖ÷¼üµÄ²åÈ룬
µ±Ö÷¼üֵΪ×Ô¶¯Ôö¼ÓʱΪfalse&lt;/param&gt;
/// <param name="returnType">·µ»ØµÄÊý¾ÝÀàÐÍ£ºDBReturnType.EffectRow Ϊ·µ»ØÊÜÓ°ÏìÐÐÊý£» DBReturnType.IdEntity ·µ»Ø×îвåÈëÖ÷¼üÖµ£¨isIncludeKeyColumn == falseʱÓÐЧ£©</param> public static int Insert(T model, bool isIncludeKeyColumn, DBReturnType returnType) where T : class { int i = 0; Type type = typeof(T); //»ñÈ¡±íÃû string tableName = EntityHelper.GetTableName(type); PropertyInfo[] pis = type.GetProperties(); //»ñÈ¡ËùÓÐ×ֶκÍÖ÷¼üÃû³Æ List columns = null; //´¦ÀíÊÇ·ñ°üº¬Ö÷¼ü²åÈë if (isIncludeKeyColumn == false) { columns = EntityHelper.GetTableColumns(pis, ColumnKeyType.Identity | ColumnKeyType.Extend, null); } else { columns = EntityHelper.GetTableColumns(pis, ColumnKeyType.Extend, null); } //Éú³ÉINSERTÓï¾ä StringBuilder sqlText = new StringBuilder(); sqlText.Append("INSERT INTO "); sqlText.Append(tableName); sqlText.Append(" ("); //µÚÒ»¸ö×Ö¶Î sqlText.Append(columns[0]); //µÚ¶þ¸öÆðËùÓÐ×Ö¶Î int loop = columns.Count; for (i = 1; i < loop; i++) { sqlText.Append(","); sqlText.Append(columns[i]); } sqlText.Append(") VALUES ("); //µÚÒ»¸ö×Ö¶Î sqlText.Append("@"); sqlText.Append(columns[0]); //µÚ¶þ¸öÆðËùÓÐ×Ö¶Î for (i = 1; i < loop; i++) { sqlText.Append(",@"); sqlText.Append(columns[i]); } sqlText.Append(");"); //Éú³ÉMySqlParamter PropertyInfo propertyInfo = null; SqlParameter[] paras = new SqlParameter[loop]; for (i = 0; i < loop; i++) { propertyInfo = type.GetProperty(columns[i]); paras[i] = new SqlParameter(columns[i], GetMySqlDbType(propertyInfo.PropertyType), -1); paras[i].Value = propertyInfo.GetValue(model, null); } //¸ù¾ÝÁ½ÖÖÇé¿ö·µ»Ø²»Í¬µÄÖµ if (isIncludeKeyColumn == false && returnType == DBReturnType.Identity) { sqlText.Append(" SELECT @@identity AS RetId"); SqlDataReader sdr = DataReader(sqlText.ToString(), CommandType.Text, paras); int keyId = 0; if (sdr.Read()) { keyId = Convert.ToInt32(sdr["RetId"]); } sdr.Close(); return keyId; } else { return NonQuery(sqlText.ToString(), CommandType.Text, paras); } } #endregion #region ¸ù¾ÝTypeÀàÐÍ»ñÈ¡SQLµÄÊý¾ÝÀàÐÍ /// /// ¸ù¾ÝTypeÀàÐÍ»ñÈ¡MySQLµÄÊý¾ÝÀàÐÍ /// /// <param name="type"></param> /// private static SqlDbType GetMySqlDbType(Type type) { SqlDbType dbtype = SqlDbType.VarChar; if (type.Equals(typeof(string))) { } else if (type.Equals(typeof(int))) { dbtype = SqlDbType.Int; } else if (type.Equals(typeof(bool))) { dbtype = SqlDbType.Bit; } else if (type.Equals(typeof(DateTime))) { dbtype = SqlDbType.DateTime; } else if (type.Equals(typeof(decimal))) { dbtype = SqlDbType.Decimal; } else if (type.Equals(typeof(float))) { dbtype = SqlDbType.Float; } else if (type.Equals(typeof(double))) { dbtype = SqlDbType.Float; } return dbtype; } #endregion

ÏÂÃæÎÒÃǼòµ¥¶¨ÒåÒ»¸öÃèÊöÊý¾Ý¿â×Ö¶ÎÐÅÏ¢µÄAttribute °üÀ¨±íÃû ÊôÐÔ×ֶλñµÃ

´ÓModelÄ£ÐÍÖлñÈ¡Êý¾Ý±íÃû¡¢Ö÷¼üÃû¡¢ »ñÈ¡ÐèÒªµÄ¶ÁÈ¡Êý¾ÝÔ´µÄ×ֶμ¯

£¨ÍüÁË˵Ã÷±íµÄ±íÃûдÔÚÄǸöµØ·½£¬Æäʵ±íÃûÖ»ÐèÒª¶¨ÒåÔÚÀàµÄÉÏÃæ¾Í¿ÉÒÔÁË£©ÎªÁ˼òµ¥Æð¼ûÎÒ»¹ÊǰÑĿǰµÄmodel·Åµ½´úÂëÀïÃæ

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace FuzhuKeji

{

    [Serializable]

    [Property("TB_People")]

    public class M_People

    {

 

        string _Pl_ID;

 

        /// 

        /// Ö÷¼ü

        /// 

        [Property(ColumnKeyType.Identity)]

        public string Pl_ID

        {

            get { return _Pl_ID; }

            set { _Pl_ID = value; }

        }

 

        int _PL_Age;

        

        public int PL_Age

        {

            get { return _PL_Age; }

            set { _PL_Age = value; }

        }

 

        string _Pl_Sex;

     

        public string Pl_Sex

        {

            get { return _Pl_Sex; }

            set { _Pl_Sex = value; }

        }

 

        string _Pl_LoginName;

         

        public string Pl_LoginName

        {

            get { return _Pl_LoginName; }

            set { _Pl_LoginName = value; }

        }

 

        string _Pl_TrueName;

      

        public string Pl_TrueName

        {

            get { return _Pl_TrueName; }

            set { _Pl_TrueName = value; }

        }

 

        string _PL_Pwd;

    

        public string PL_Pwd

        {

            get { return _PL_Pwd; }

            set { _PL_Pwd = value; }

        }

 

    }

}

ºÃ°ÉÕâÑù¾Í²»Óõ£ÐÄÁËÓ³Éä±íÃû»ñµÃ×ֶεĴúÂëÔÚÏÂÃæ£º

#region ÏÂÃæÎÒÃǼòµ¥¶¨ÒåÒ»¸öÃèÊöÊý¾Ý¿â×Ö¶ÎÐÅÏ¢µÄAttribute °üÀ¨±íÃû ÊôÐÔ×ֶλñµÃ

  public class PropertyAttribute : Attribute

  {

      public string tableName;

      public ColumnKeyType columnKeyType;

 

      /// 

      /// ÖØ¹¹·½·¨Ä¬ÈÏÖµ

      /// 

      public PropertyAttribute()

      {

          this.columnKeyType = ColumnKeyType.Default;

      }

 

      /// 

      /// 

      /// 

      /// <param name="tableName"></param>

      public PropertyAttribute(string tableName)

      {

          this.tableName = tableName;

      }

 

      public PropertyAttribute(ColumnKeyType columnKeyType)

      {

          this.columnKeyType = columnKeyType;

      }

  }

 

  #endregion

 

  #region  ´ÓModelÄ£ÐÍÖлñÈ¡Êý¾Ý±íÃû¡¢Ö÷¼üÃû¡¢ »ñÈ¡ÐèÒªµÄ¶ÁÈ¡Êý¾ÝÔ´µÄ×ֶμ¯

 

  public class EntityHelper

  {

      /// 

      /// ´ÓModelÄ£ÐÍÖлñÈ¡Êý¾Ý±íÃû

      /// 

      public static string GetTableName(Type type)

      {

          PropertyAttribute property = (PropertyAttribute)(type.GetCustomAttributes(false)[0]);

          return property.tableName;

      }

 

 

 

      /// 

      /// ´ÓModelÄ£ÐÍÖлñÈ¡Êý¾ÝÖ÷¼üÃû

      /// 

      public static PropertyInfo GetTableIdentity(PropertyInfo[] pis)

      {

          object[] infos = null;

          PropertyAttribute attribute = null;

          foreach (PropertyInfo pi in pis)

          {

              infos = pi.GetCustomAttributes(false);

              if (infos.Length > 0)

              {

                  attribute = (PropertyAttribute)(infos[0]);

                  if (attribute.columnKeyType == ColumnKeyType.Identity)

                  {

                      return pi;

                  }

              }

          }

 

          return null;

      }

 

      /// 

      /// »ñÈ¡ÐèÒªµÄ¶ÁÈ¡Êý¾ÝÔ´µÄ×ֶμ¯

      /// 

     
 /// <param name="pis">ModelÄ£ÐÍËùÓÐÊôÐÔ¼¯ºÏ</param>
      
/// <param name="filter"></param>
      /// <param name="customColumns">×Ô¶¨Òå²éѯÁÐÃû¼¯ºÏ£¬Ê¹ÓöººÅ·Ö¸ô¡£Èç²»ÐèÒªÔòΪnull</param>

      /// 

      public static List GetTableColumns(PropertyInfo[] pis, ColumnKeyType filter, string customColumns)

      {

          string col = "";

          return GetTableColumns(pis, filter, customColumns, ref col);

      }
      /// 

      /// »ñÈ¡ÐèÒªµÄ¶ÁÈ¡Êý¾ÝÔ´µÄ×ֶμ¯

      /// 

      /// <param name="pis">ModelÄ£ÐÍËùÓÐÊôÐÔ¼¯ºÏ</param>

      /// <param name="filter"></param>

      /// <param name="customColumns">×Ô¶¨Òå²éѯÁÐÃû¼¯ºÏ£¬Ê¹ÓöººÅ·Ö¸ô¡£Èç²»ÐèÒªÔòΪnull</param>

      /// 

      public static List GetTableColumns(PropertyInfo[] pis, ColumnKeyType filter, string customColumns, ref string outCol)

      {

          List columns = new List();

          if (customColumns != null && customColumns.Length > 0)

          {

              /*

               * ÐèÒª°²È«´¦Àí

               * ÏÞÖÆ×ֶβ»°üº¬¿Õ¸ñ

               */

              customColumns = customColumns.Trim();

              string[] strs = customColumns.Split(',');

              foreach (string str in strs)

              {

                  if (IsRegexMatch(str, @"^(\w[^\s';]+)$"))

                  {

                      columns.Add(str);

                  }

              }

              outCol = customColumns;

          }

          else

          {

              object[] infos = null;

              PropertyAttribute attribute = null;

              foreach (PropertyInfo pi in pis)

              {

                  //ɾ³ýÍⲿÀ©Õ¹¶ÔÏóÏî

                  infos = pi.GetCustomAttributes(false);

                  if (infos.Length > 0)

                  {

                      attribute = (PropertyAttribute)(infos[0]);

                      if (attribute.columnKeyType == (filter & attribute.columnKeyType))

                      {

                          continue;

                      }

                  }

                  outCol += string.Concat(",", pi.Name);

                  columns.Add(pi.Name);

              }

              outCol = outCol.Remove(0, 1);

          }

          return columns;

      }
      /// 

      /// ¼ì²éÊÇ·ñÂú×ãijÖÖÕýÔò±í´ïʽ

      /// 

      private static bool IsRegexMatch(string str, string Express)

      {

          if (string.IsNullOrEmpty(str))

          {
              return false;
          }
          return Regex.IsMatch(str, Express);

 

      }

  }

 

  #endregion

ÉÏÃæ¾ÍÍê³ÉÁËsqlÓï¾äµÄÉú³É£ºÏÂÃæÎҾͶ¨ÒåÒ»¸ösqlÓï¾äµÄÖ´ÐоͿÉÒÔÁË¡£ÆäʵÄãµ½insert·½·¨Àï»á·¢ÏÖ ÔÚÉú²úÍêsqlÓï¾ä¾Íµ÷ÓÃÖ´Ðз½·¨ÁË¡£

/// 

/// ÅäÖÃ×Ö·û´®²ÎÊý

/// 

private static void PrepareCommand(SqlConnection conn, SqlTransaction trans, 
SqlCommand sqlCommand, string sqlText, CommandType commandType, SqlParameter[] parms)

{

    if (conn.State != ConnectionState.Open)

    {

        conn.Open();

    }

 

    sqlCommand.Connection = conn;

    sqlCommand.CommandText = sqlText;

    sqlCommand.CommandType = commandType;

 

    if (trans != null)

    {

        sqlCommand.Transaction = trans;

    }

 

    if (parms != null)

    {

        foreach (SqlParameter parm in parms)

        {

            sqlCommand.Parameters.Add(parm);

        }

    }

}

 

 

/// 

/// Ö´ÐÐSQLÓï¾ä£¬·µ»ØÊý¾Ý¼¯

/// 

public static SqlDataReader DataReader(string sqlText, CommandType commandType, SqlParameter[] parms)

{

    SqlConnection conn = new SqlConnection(@"Data Source=HAOFUQI\SQLEXPRESS;
Initial Catalog=Fukusuke;Persist Security Info=True;User ID=sa;pwd=123");

    SqlCommand sqlCommand = new SqlCommand();

    PrepareCommand(conn, null, sqlCommand, sqlText, commandType, parms);

 

    SqlDataReader reader = sqlCommand.ExecuteReader(CommandBehavior.CloseConnection);

 

    sqlCommand.Dispose();

    return reader;

}

 

 

/// 

/// Ö´ÐÐSQLÓï¾ä£¬²¢·µ»ØÓ°ÏìÐÐÊý

/// 

public static int NonQuery(string sqlText, CommandType commandType, SqlParameter[] parms)

{

    int reVal = 0;

    using (SqlConnection conn = new SqlConnection(@"Data Source=HAOFUQI\SQLEXPRESS;
Initial Catalog=Fukusuke;Persist Security Info=True;User ID=sa;pwd=123"))

    {

        SqlCommand sqlCommand = new SqlCommand();

        PrepareCommand(conn, null, sqlCommand, sqlText, commandType, parms);

 

        reVal = sqlCommand.ExecuteNonQuery();

      

        sqlCommand.Parameters.Clear();

        sqlCommand.Dispose();

    }

 

    return reVal;

Áù¡¢²âÊÔORMµÄ²åÈëÓ³Éä¡£

 /// 
        ///  Ö´ÐвåÈëÓï¾ä
        /// </summary>
/// <param name="sender"></param>
/// <param name="e"></param> private void button3_Click(object sender, EventArgs e) { M_People mp = new M_People(); mp.PL_Age = 26; mp.Pl_ID = "001"; mp.Pl_LoginName = "Test1"; mp.PL_Pwd = "123"; mp.Pl_Sex = "ÄÐ"; mp.Pl_TrueName = "ÕÅÈý"; int Insert_Key= DBHelper.Insert(mp,false ,DBReturnType.Identity); MessageBox.Show("Ìí¼Ó³É¹¦£¡ ²åÈëÊý¾ÝµÄÖ÷¼üΪ£º"+Insert_Key.ToString()); }

²âÊÔ½á¹ûÈçÏ£º

Êý¾Ý¿â²åÈëЧ¹û£º

Õâ¸öµØ·½¾Í²åÈëÓï¾ä³É¹¦ÁË¡£

Æß¡¢×ܽᡣ

ÕâÆªÎÄÕÂдµÃ²»ÊǺܺã¬ÎÒÖ»ÊÇÏëÃèÊö£¬È´Ã»ÓÐÒ»²ã²ãÈ¥°þ¿ª£¬Ò²ÐíÕâÆªÎÄÕÂÌ«³¤Á˰ɡ£
ÕâÆªÎÄÕµĺËÐÄÓ¦¸ÃÊÇ˵Ã÷°×ÈçºÎÓ³ÉäÈçºÎµ½sql¡£Ã»ÓзֲãµÄ¸ÅÄî¡£¿´ÆðÀ´»ìÂÒ£¬µ«ÊÇÈç¹û·Ö²ãÎÒ¾ÍÒª¸ü¶àƪ·ù½²½â¡£


дµÄ´íÎó»òÕß²»ºÃµÄµØ·½»¹Çë¶à¶àÅúÆÀÖ¸µ¼¡£

ÉÏһƪдµÄÊÇ£ºÎª³õѧÕßдÈý²ã.Ϊ³õѧÕßдÈý²ã£¬Èý²ãµÄ´î½¨ºÍ²âÊÔÀý×Ó

ÏÂÃæ×¼±¸Ð´ORM¿ò¼Ü£¬È»ºó°ÑÉú³ÉÆ÷¼¯³Éµ½¿ò¼ÜÖС££¨Î±Èý²ã+ORM£©+Éú³ÉÆ÷+³£ÓÃÀà¿â ÓÃÒ»¸ö²ÆÎñ±¨Ïúϵͳ×÷Ϊ°¸Àý¡£

ºÃÁ˾Íдµ½Õâ°É£¡

   
5676 ´Îä¯ÀÀ       51
Ïà¹ØÎÄÕÂ

΢·þÎñ²âÊÔÖ®µ¥Ôª²âÊÔ
һƪͼÎÄ´øÄãÁ˽â°×ºÐ²âÊÔÓÃÀýÉè¼Æ·½·¨
È«ÃæµÄÖÊÁ¿±£ÕÏÌåϵ֮»Ø¹é²âÊÔ²ßÂÔ
È˹¤ÖÇÄÜ×Ô¶¯»¯²âÊÔ̽Ë÷
Ïà¹ØÎĵµ

×Ô¶¯»¯½Ó¿Ú²âÊÔʵ¼ù֮·
jenkins³ÖÐø¼¯³É²âÊÔ
ÐÔÄܲâÊÔÕï¶Ï·ÖÎöÓëÓÅ»¯
ÐÔÄܲâÊÔʵÀý
Ïà¹Ø¿Î³Ì

³ÖÐø¼¯³É²âÊÔ×î¼Ñʵ¼ù
×Ô¶¯»¯²âÊÔÌåϵ½¨ÉèÓë×î¼Ñʵ¼ù
²âÊԼܹ¹µÄ¹¹½¨ÓëÓ¦ÓÃʵ¼ù
DevOpsʱ´úµÄ²âÊÔ¼¼ÊõÓë×î¼Ñʵ¼ù
×îл¼Æ»®
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢ 6-12[ÏÃÃÅ]
È˹¤ÖÇÄÜ.»úÆ÷ѧϰTensorFlow 6-22[Ö±²¥]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 6-30[±±¾©]
ǶÈëʽÈí¼þ¼Ü¹¹-¸ß¼¶Êµ¼ù 7-9[±±¾©]
Óû§ÌåÑé¡¢Ò×ÓÃÐÔ²âÊÔÓëÆÀ¹À 7-25[Î÷°²]
ͼÊý¾Ý¿âÓë֪ʶͼÆ× 8-23[±±¾©]

LoadRunnerÐÔÄܲâÊÔ»ù´¡
Èí¼þ²âÊÔ½á¹û·ÖÎöºÍÖÊÁ¿±¨¸æ
ÃæÏò¶ÔÏóÈí¼þ²âÊÔ¼¼ÊõÑо¿
Éè¼Æ²âÊÔÓÃÀýµÄËÄÌõÔ­Ôò
¹¦ÄܲâÊÔÖйÊÕÏÄ£Ð͵Ľ¨Á¢
ÐÔÄܲâÊÔ×ÛÊö


ÐÔÄܲâÊÔ·½·¨Óë¼¼Êõ
²âÊÔ¹ý³ÌÓëÍŶӹÜÀí
LoadRunner½øÐÐÐÔÄܲâÊÔ
WEBÓ¦ÓõÄÈí¼þ²âÊÔ
ÊÖ»úÈí¼þ²âÊÔ
°×ºÐ²âÊÔ·½·¨Óë¼¼Êõ


ij²©²ÊÐÐÒµ Êý¾Ý¿â×Ô¶¯»¯²âÊÔ
IT·þÎñÉÌ Web°²È«²âÊÔ
IT·þÎñÉÌ ×Ô¶¯»¯²âÊÔ¿ò¼Ü
º£º½¹É·Ý µ¥Ôª²âÊÔ¡¢Öع¹
²âÊÔÐèÇó·ÖÎöÓë²âÊÔÓÃÀý·ÖÎö
»¥ÁªÍøweb²âÊÔ·½·¨Óëʵ¼ù
»ùÓÚSeleniumµÄWeb×Ô¶¯»¯²âÊÔ