×ß½øLinq Linq to SQLÔ´´úÂëÉÍÎö
ÔÚDataContextÖÐÎÒÃÇ´ò½»µÀ×î¶àµÄÒ²Ðí¾ÍÊÇGetTable<TEntity>()·½·¨ÁË£¬Õâ¸ö·½·¨»á»ñȡһ¸öTable<TEntity>¶ÔÏ󣬽ñÌìÎÒÃǾÍÀ´¿´¿´Õâ¸ö¶ÔÏóÊÇÈçºÎ»ñÈ¡µÄ¡£
¡¡¡¡¶ÔÓÚ»ñÈ¡Table<TEntity>¶ÔÏóÎÒÃÇ»¹Òª¿´¿´Õâ¸öDataContextÊDz»ÊÇÇ¿ÀàÐ͵쬹ØÓÚÇ¿ÀàÐ͵ÄDataContext¿ÉÒÔ¿´ÎÒÇ°ÃæÒ»ÆªÎÄÕ£¬Ç¿ÀàÐ͵ÄDataContextÀï°üº¬Óм¸¸öTable<TEntity>ÀàÐ͵ÄÊôÐÔ£¬±ÈÈçÎÒÃǵĿâÖÐÓÐblogs¡¢postsµÈÊý¾Ý
¿â±í£¬ÄÇôÄã¿ÉÄܾͻὨÁ¢Table<Blog>ºÍTable<Post>ÀàÐ͵ÄÊôÐÔ£¨²Î¼ûÇ°ÃæÒ»ÆªÎÄÕ£©¡£ÔÚÉÏÒ»ÕÂDataContextµÄ³õʼ»¯Àï½²µ½Init·½·¨µÄ×îºóÒ»ÐÐÊÇInitTables·½·¨µÄµ÷Óá£ÎÒÃÇÊ×ÏÈÀ´¿´¿´InitTables·½·¨µÄ´úÂ룺
///<summary>
///³õʼ»¯Êý¾Ý¿âÖÐÓм¸¸ö±í
///´Ó·½·¨ÊµÏÖÖÐÒâͼÀ´¿´£¬Õâ¸ö·½·¨Ö÷ÒªÔÚ¶¨ÒåÁËÇ¿ÀàÐ͵ÄDataContext²ÅÓÐÒâÒå
///ÔÚÇ¿ÀàÐ͵ÄDataContextÀïÒ»°ã¶¨ÒåÁËTable<Post>Ö®ÀàµÄ×Ö¶ÎÀ´±íʾÊý¾Ý¿âÖÐÓм¸¸ö
///±í£¬¸Ã·½·¨µ÷ÓÃDataContextµÄGetTable·½·¨ÉèÖÃÕâЩ×ֶεÄÖµ
///</summary>
///<paramname="schema"></param>
private void InitTables(objectschema)
{
¡¡¡¡//Ó÷´Éä±éÀúDataContextÀࣨ¿ÉÄÜÊÇËüµÄ×ÓÀࣩÀïËùÓеĹ«ÓÐʵÀý×Ö¶Î
¡¡¡¡¡¡foreach(FieldInfo info in schema.GetType().GetFields(BindingFlags.Public|BindingFlags.Instance))
¡¡¡¡{
¡¡¡¡¡¡¡¡//×Ö¶ÎÀàÐÍ
¡¡¡¡¡¡¡¡Type fieldType=info.FieldType;
¡¡¡¡¡¡¡¡//¸Ã×Ö¶ÎÊÇ·ñÊÇ·ºÐ͵쬲¢ÇÒÊÇTable<>ÀàÐ͵쬶øÇÒ¸Ã×ֶεÄֵΪnull
¡¡¡¡¡¡¡¡if((fieldType.IsGenericType&&(fieldType.GetGenericTypeDefinition()==
¡¡¡¡¡¡¡¡¡¡¡¡typeof(Table<>)))&&(((ITable)info.GetValue(schema))==null))
¡¡¡¡¡¡¡¡{
¡¡¡¡¡¡¡¡¡¡¡¡¡¡//»ñÈ¡Table<TEntity>ÖÐTEntityµÄ¾ßÌåÀàÐÍ
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Typetype=fieldType.GetGenericArguments()[0];
¡¡¡¡¡¡¡¡¡¡¡¡¡¡//µ÷ÓÃDataContextµÄGetTable·½·¨µÃµ½Ò»¸öITable¶ÔÏó
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ITable table=this.GetTable(type);
¡¡¡¡¡¡¡¡¡¡¡¡¡¡//ÉèÖÃÖµ
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡info.SetValue(schema,table);
¡¡¡¡¡¡¡¡¡¡}
¡¡¡¡¡¡¡¡}
}
´úÂëÖеÄ×¢ÊÍ˵µÄºÜÏêϸÁË£¬ÏÈ¿´¿´DataContextÀàÀïÊÇ·ñÓÐTable<TEntity>µÄÊôÐÔ£¬¶øÖ»ÓÐÔÚÇ¿ÀàÐ͵ÄDataContextÇé¿öϲŻáÓеġ£ËùÒÔÖ»ÓÐÔÚÇ¿ÀàÐ͵ÄÇé¿öϲŻáÔÚ³õʼ»¯DataContextµÄʱºòÉèÖÃÕâЩTable<
Ïà¹ØÎĵµ£º
ÊÓͼ¿ÉÒÔ±»¿´³ÉÊÇÐéÄâ±í»ò´æ´¢²éѯ¡£¿Éͨ¹ýÊÓͼ·ÃÎʵÄÊý¾Ý²»×÷Ϊ¶ÀÌØµÄ¶ÔÏó´æ´¢ÔÚÊý¾Ý¿âÄÚ¡£Êý¾Ý¿âÄÚ´æ´¢µÄÊÇ SELECT Óï¾ä¡£SELECT Óï¾äµÄ½á¹û¼¯¹¹³ÉÊÓͼËù·µ»ØµÄÐéÄâ±í¡£Óû§¿ÉÒÔÓÃÒýÓñíʱËùʹÓõķ½·¨£¬ÔÚ Transact-SQL Óï¾äÖÐͨ¹ýÒýÓÃÊÓͼÃû³ÆÀ´Ê¹ÓÃÐéÄâ±í¡£Ê¹ÓÃÊÓͼ¿ÉÒÔʵÏÖÏÂÁÐÈÎÒ»»òËùÓй¦ÄÜ£º
¡¡¡¡½«Óû§ÏÞ¶¨ÔÚ±í ......
´¥·¢³ÌÐò£¨trigger£©ÊÇÒ»ÖÖÌØÊâÐÍ̬µÄÔ¤´æ³ÌÐò£¬µ±ÄúʹÓÃInsert¡¢Update»òDeleteÃüÁîÀ´ÐÞ¸Ä×ÊÁÏÁÐʱ£¬Microsoft SQL Server»á×Ô¶¯Ö´ÐÐÄúËù¶¨ÒåµÄ´¥·¢³ÌÐò¡£
´¥·¢³ÌÐò£¨trigger£© ÊÇÒ»ÖÖÌØÊâµÄÔ¤´æ³ÌÐò£¬Ö´ÐÐÌØ¶¨µÄ³ÂÊöʽ£¨Update¡¢Insert »ò Delete£©¾Í¿ÉÒÔ啟¶¯´¥·¢³ÌÐò¡£´¥·¢ ......
Ò»¡¢¾ßÓÐÖ÷¼üµÄÇé¿ö
I.¾ßÓÐΨһÐÔµÄ×Ö¶Îid(ΪΨһÖ÷¼ü)
delete Óû§±í
where id not in
(
select max(id) from Óû§±í group by col1,col2,col3...
)
group by ×Ó¾äºó¸úµÄ×ֶξÍÊÇÄãÓÃÀ´ÅжÏÖØ¸´µÄÌõ¼þ£¬ÈçÖ»ÓÐcol1£¬
ÄÇôֻҪcol1×Ö¶ÎÄÚÈÝÏàͬ¼´±íʾ¼Ç¼Ïàͬ¡£
II. ......
1 ǰÑÔ
¿Í·þÒµÎñÊܵ½SQLÓï¾äµÄÓ°Ïì·Ç³£´ó£¬ÔÚ¹æÄ£±È½Ï´óµÄ¾Öµã£¬ÍùÍùÒòΪһ¸öСµÄSQLÓï¾ä²»¹»ÓÅ»¯£¬µ¼ÖÂÊý¾Ý¿âÐÔÄܼ±¾çϽµ£¬Ð¡ÐÍ»úidleËùÊ£ÎÞ¼¸£¬Ó¦Ó÷þÎñÆ÷¶ÏÁ¬¡¢³¬Ê±£¬ÑÏÖØÓ°ÏìÒµÎñµÄÕý³£ÔËÐС£Òò´Ë£¬³ÆµÍЧµÄSQLÓï¾äΪ¿Í·þÒµÎñµÄ‘¶ñÁú’²¢²»¹ý·Ö¡£Êý¾Ý¿âµ ......
sqlÈý±íÁªºÏ²éѯ
a±í£º³Ùµ½¼Ç¼±í---------------------------------------------------------------------------------------------------------------------
ÐÕÃû Ö°¹¤±àºÅ &nb ......