Ò» ¡¢Ê²Ã´ÊÇ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>
/// <param name="isIncludeKeyColumn">²åÈëÓï¾äÖÐÊÇ·ñ°üº¬¶ÔÖ÷¼üµÄ²åÈ룬
µ±Ö÷¼üֵΪ×Ô¶¯Ôö¼ÓʱΪfalse</param> /// <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£©+Éú³ÉÆ÷+³£ÓÃÀà¿â ÓÃÒ»¸ö²ÆÎñ±¨Ïúϵͳ×÷Ϊ°¸Àý¡£
ºÃÁ˾Íдµ½Õâ°É£¡
|