±¾ÎÄÒªµã
1.ÓÉÓÚ¶ÔÏó-¹ØÏµ×迹ʧÅ䣬´«Í³µÄN²ãÉè¼Æ»áÒý·¢ÎÊÌ⣻
2.ÐÞ¸´ORMºÍÊý¾Ý¿âÎÊÌâµÄ×î¼Ñ·½Ê½ÊÇÒÆ³ýÄÇЩ²ã£»
3.·ÃÎÊÊý¾Ý¿â¶ÔÏó¿ÉÒԺͷÃÎÊÆÕͨµÄ.NETÀàÒ»Ñù¼òµ¥£»
4.ûÓд«Í³ÏÞÖÆµÄÊý¾Ý¿â¿ÉÒÔÌṩÉè¼Æ×ÔÓÉ£»
5.ÀàËÆStarcounterÕâÑùµÄ»ìºÏÊý¾Ý¿âÈÃÕâÒ»µã³ÉΪ¿ÉÄÜ¡£
±¾ÎĽ«Öصã½éÉܵ±Ç°¹©Èí¼þ¿ª·¢ÈËÔ±ºÍ¶ÀÁ¢Èí¼þ¹©Ó¦ÉÌʹÓõÄMVC¿ò¼ÜËù´æÔÚµÄһЩÎÊÌ⣬ȻºóÀûÓÃÄÚ´æÄÚÓ¦ÓóÌÐòÒýÇæStarcounterÌṩÁ˽â¾ö·½°¸¡£ÎªÁ˾¡¿ÉÄܵØÕæÊµ£¬¼¸¸öÔ´ÓÚʵ¼ÊÏîÄ¿µÄÀý×ÓʹÓÃÁËASP.NET+Entity
Framework£¨Êý¾Ý¿âÓÅÏȺʹúÂëÓÅÏÈ£©£¬²¢ÒÔMS-SQL Server»òMySQL×÷ΪÊý¾Ý¿âÒýÇæ¡£±¾ÎÄĩβÓÐÒ»¸ö¼òµ¥µÄÈëÃÅÏîÄ¿£¬²»Òª¶Á¹ý¾ÍÍêÁË£¬»¹ÒªÇ××Ô²âÊÔһϡ£
ÔÚ¿ª·¢ÒµÎñÓ¦ÓóÌÐòʱ£¬Äã»á·¢ÏÖ£¬¼¸ºõÿ¸öÓ¦ÓóÌÐò¶¼ÐèÒªÒ»ÖÂÐÔ¹ÜÀí¼°ÔÚ¶à¸ö²¢·¢Óû§Ö®¼ä¹²ÏíÊý¾Ý¡£Í¨³££¬¸Ã¹¦ÄÜÊÇÓÉÊý¾Ý¿â¹ÜÀíϵͳ£¨DBMS£©ÌṩµÄ¡£ÔçÔÚ70Äê´ú³õ£¬´ó²¿·ÖDBMS¾ÍʵÏÖÁ˱ê×¼Êý¾Ý²Ù×÷ÓïÑÔSQL¡£ÓÚÊÇ£¬Èí¼þ¿ª·¢ÈËÔ±ÐèÒª¸ù¾Ýÿ¸öϵͳµÄÓÅȱµãÑ¡ÔñÒ»ÖÖÊý¾Ý´æ´¢·½·¨¡£È»¶ø£¬ËùÓеÄÓ¦ÓóÌÐò²î²»¶à¶¼²ÉÓÃÁËͬÑùµÄÉè¼Æ£ºÓ¦ÓóÌÐòÂß¼ÔÚÕâÀÊý¾Ý¿âÔÚÄÇÀï¡£

1.ORM
SQLÊý¾Ý¿âÒýÇæ°´ÕÕ±í¡¢ÁкÍÐÐÀ´²Ù×÷Êý¾Ý¡£Ê¹ÓÃÈÎÒâOOPÓïÑÔ±àдµÄÓ¦ÓóÌÐòÔò°´ÕÕÀà¡¢ÊôÐÔºÍʵÀýÀ´²Ù×÷Êý¾Ý¡£
ÕâÖÖʧÅä»áµ¼ÖÂÓ¦ÓóÌÐòºÍÊý¾Ý¿âÖ®¼äµÄͨÐŲã²úÉú´óÁ¿µÄÈßÓà´úÂ롣ΪÁ˼õÉÙÈßÓà´úÂë¡¢BugºÍ¿ª·¢Ê±¼ä£¬ORM¿â£¨¶ÔÏó¹ØÏµÓ³É䣩±»·¢Ã÷³öÀ´¡£
ORMÔÚÓ¦ÓóÌÐòºÍÊý¾Ý¿âÖ®¼äÓÖ¼ÓÁËÒ»²ã¡£ORM³äµ±ÁË±í¡¢ÁС¢ÐкÍÀà¡¢ÊôÐÔ¡¢ÊµÀý¸ÅÄîÖ®¼äµÄ·Òë¡£
ORMsÖ¼ÔÚ£º
1.1. ÒÆ³ýÓ¦ÓóÌÐòÖеÄËùÓÐSQL´úÂ룻
1.2. Ϊ·ÃÎÊÊý¾Ý¿â±íÌṩºÍ·ÃÎÊÆÕͨµÄÓ¦ÓóÌÐòÀàÒ»ÑùµÄ·½Ê½£»
1.3. Ϊ²»ÐÞ¸ÄÓ¦ÓóÌÐò´úÂëÇл»Êý¾Ý¿âÒýÇæÌṩ¿ÉÄÜ¡£
Õâ¿ÉÄÜÌýÉÏÈ¥ºÜºÃ£¬µ«Òź¶µÄÊÇ£¬Ã»ÓÐÕâÑùµÄºÃÊ¡£ÏÂÃæÊǵ±Ç°Ê¹ÓÃORMµÄʵ¼ÊÇé¿ö£º
1.1. ¼õÉÙÓ¦ÓóÌÐòÖеÄSQL´úÂ룻
1.2. Ϊ·ÃÎÊÊý¾Ý¿â±íÌṩºÍ·ÃÎÊÆÕͨµÄÓ¦ÓóÌÐòÀàÀàËÆµÄ·½Ê½£»
1.3. ΪÉÙÐÞ¸ÄÓ¦ÓóÌÐò´úÂëÇл»Êý¾Ý¿âÒýÇæÌṩ¿ÉÄÜ¡£
³öÏÖÕâÖÖÇé¿ö²»ÊÇÒòΪORM²»ºÃ£¬¶øÊÇÒòΪÊý¾Ý¿âÒýÇæµÄ¼Ü¹¹¡£ÈÃÎÒÃÇ¿´Ï¾¿¾¹ÊÇʲôÏÞÖÆÁËORM¡£
1.1. ÒÆ³ýÓ¦ÓóÌÐòÖеÄËùÓÐSQL´úÂë
ÔÚÈκÎSQLÊý¾Ý¿âÒýÇæÖУ¬SQL²éѯ¶¼ÊÇΨһµÄÊý¾Ý²Ù×÷·½Ê½¡£ORMÓ¦¸Ã½«±íÀàʵÀýÉϵÄÿ¸ö¶¯×÷ת»»³ÉSQL²éѯ£¬²¢ÔÚÊý¾Ý¿âÀïÔËÐС£
ORMÉв»¹»ÖÇÄÜ£¬ÎÞ·¨Ñ¡Ôñ×îºÃµÄSQLÓï·¨¡£´óÐ͸´ÔÓ²éѯ»¹ÊÇÓ¦¸ÃÓÉ¿ª·¢ÈËÔ±ÀûÓÃ×Ô¼ºµÄSQL֪ʶÀ´±àд¡£
ÓÐЩ¶¯×÷£¬Èç´¥·¢Æ÷£¬Ö»ÄÜÔÚÊý¾Ý¿âÒýÇæÄÚÖ´ÐУ¬¶ø¸ÃÒýÇæÖ»Ö§³ÖSQL¡£
1.2. Ϊ·ÃÎÊÊý¾Ý¿â±íÌṩºÍ·ÃÎÊÆÕͨµÄÓ¦ÓóÌÐòÀàÒ»ÑùµÄ·½Ê½
ÀàʵÀýµÄÊôÐÔÖµºÍʵÀý±¾Éí¶¼±£´æÔÚÄÚ´æÖС£±íÀàµÄÊôÐÔÖµ±£´æÔÚÊý¾Ý¿âÒýÇæÖУ¬¿ÉÄÜÊÇHDD»òÄÚ´æµÄÁíÒ»²¿·Ö¡£ÎªÁË·ÃÎʱíÀàʵÀý£¬ÎÒÃDZØÐ뽫ËùÓеÄÊôÐÔÖµÒ»Æð¼ÓÔØ£¬»òÕß°´Ðè¼ÓÔØÃ¿¸öÊôÐÔ£¨ÑÓ³Ù¼ÓÔØ£©¡£ÕâÁ½ÖÖ·½·¨¶¼¿ÉÄܻᵼÖÂÐÔÄÜÎÊÌâ¡£
ÔÚ·ÃÎʱíÀàµÄʵÀýʱ£¬¿ª·¢ÈËÔ±Ó¦¸ÃÀμÇÊý¾Ý¿âµÄÏÞÖÆ¡£
ÎÒÃǶ¼ÖªµÀ¡°¼ÆËãÊôÐÔ£¨calculated properties£©¡±ÓжàÖØÒª£¬µ«Òź¶µÄÊÇ£¬ORM²»Ö§³Ö¡£ÀýÈ磬¿¼ÂÇÏÂÏÂÃæµÄÀàºÍ²éѯ£º
public class OrderItem { public int Quantity; public decimal Price; public decimal Amount { return this.Price * this.Quantity; } }
var items = db.OrderItems.Where(x => x.Amount
> 1000); |
Where²éѯ»á±»×ª»»³ÉSQL£¬È»ºóʧ°Ü£¬ÒòΪÊý¾Ý¿âûÓÐÌṩAmountÊôÐÔ¡£
1.3. Ϊ²»ÐÞ¸ÄÓ¦ÓóÌÐò´úÂëÇл»Êý¾Ý¿âÒýÇæÌṩ¿ÉÄÜ
ÓÐÐíÐí¶à¶à²»Í¬µÄÊý¾Ý¿âÒýÇæ£¬Ã¿Ò»ÖÖ¶¼ÓÐ×Ô¼º¶ÀÒ»ÎÞ¶þµÄÌØÐÔ¡¢ÓŵãºÍ²»×ã¡£Èç¹û²»¼ì²é²¢ÖØÐ´Ó¦ÓóÌÐòijЩ²¿·ÖµÄ´úÂ룬¾Í²»¿ÉÄÜÇл»Êý¾Ý¿âÒýÇæ¡£ÉÏÒ»¸öÒýÇæµÄ¶ÀÌØÌØÐÔ±ØÐëɾ³ý¡£
³¢ÊÔ½«Ò»¸öÏîÄ¿´ÓMS-SQLÇ¨ÒÆµ½MySQL£¬´ÓMS-SQLÇ¨ÒÆµ½MS-SQL CE£¬»òÕß·´¹ýÀ´£¬Äã¾ÍÁ˽âËùÃæÁÙµÄÌôÕ½ÁË£º²»Í¬µÄÊý¾ÝÀàÐÍ£¬²»Í¬µÄ¡°Ìø¹ýNÐС±ºÍ¡°È¡Ç°NÐС±ÊµÏÖ¡¢²»Í¬µÄ×Ó²éѯ¡¢ÊÓͼ¡¢´æ´¢¹ý³ÌʵÏÖºÍÏÞÖÆ¡£
2. ÁìÓòÇý¶¯Éè¼Æ£¨DDD£©
½«ÒµÎñÓ¦ÓóÌÐò·Ö³ÉÁ½²¿·Ö£¨Ó¦ÓúÍÊý¾Ý¿â£©»áµ¼ÖÂÒ»Ð©ÖØ´óÎÊÌ⡣ΪÁ˽â¾öÄÇЩÎÊÌ⣬ÁìÓòÇý¶¯Éè¼Æ±»·¢Ã÷³öÀ´¡£
ÏÂÃæÁгöÁËDDDÖ¼ÔÚ½â¾öµÄ²¿·ÖÎÊÌ⣺
2.1. ÏîÄ¿ÖÐÏàͬµÄ¹¦ÄÜ£¬ÆäʵÏÖ·½Ê½Ïàͬ»òÕßÔÚ²»Í¬µÄµØ·½²»Í¬£»
2.2. ͬһ¸öÏîÓв»Ö¹Ò»¸ö¶ÔÏó£»
2.3. ÓеĶÔÏóµÄÊôÐÔʵ¼ÊÉϲ»ÊÇÄǸö¶ÔÏóµÄ»ù±¾ÊôÐÔ£»
2.4. Ïà¹ØÏîÖ®¼äÓÐÒ»¸öÔã¸âµÄ¹ØÏµ£»
2.5. ÎÞ·¨Í¨¹ý²é¿´¶ÔÏóÁ˽âÕû¸öÓ¦Óá£
ÕâÀïÓÐһƪ½éÉÜDDDµÄÎÄÕ£ºÁìÓòÇý¶¯Éè¼Æ¡ª¡ª¿ªÊ¼Ö®Ç°ÏÈÃ÷ȷ˼Ïë¡£
ÏÖÔÚ£¬ÎÒÃǽ«Ïêϸ½éÉÜÉÏÃæÁгöµÄÿһÌõÄÚÈÝ£¬Àí½â϶¼ÊÇʲôÇé¿ö¡£
2.1. ÏîÄ¿ÖÐÏàͬµÄ¹¦ÄÜ£¬ÆäʵÏÖ·½Ê½Ïàͬ»òÕßÔÚ²»Í¬µÄµØ·½²»Í¬
Õâ¸öÎÊÌâµÄÔÒòÎÞÒÉÊÇÓ¦Óñ»·Ö³ÉÁ˲»Í¬µÄ²¿·Ö¡£ÏÂÃæÊÇÒ»¸ö¼òµ¥µÄÀý×Ó£º
Óиö¹ºÎï³µ£¬ÀïÃæÓÐһЩÎïÆ·¡£ÏÂÃæÊÇÁ½¸ö³¡¾°¡£
a£©Óû§Ïò¹ºÎï³µÌí¼Ó»ò´Ó¹ºÎﳵɾ³ýÒ»¸öÎïÆ·¡£×ܼۻáÔÚÓû§±£´æÐÞ¸Ä֮ǰ×Ô¶¯¼ÆËã¡£Õâ¸ö¼ÆËãÊÇÓÉÓ¦ÓóÌÐòÍê³É¡£
b£©¹ÜÀíÔ±°´ÕÕ×ܼÛ˳ÐòÁгöÁËËùÓйºÎï³µ¡£×ܼÛÊÇÓÉÊý¾Ý¿â¼ÆËãµÄ¡£
´ó¶àÊý¿ª·¢ÈËÔ±»áÇãÏòÓÚÔÚ¹ºÎï³µÖÐÌí¼ÓÒ»¸öTotalAmountÊôÐÔ¡£Ò»µ©¹ºÎï³µÀïµÄÎïÆ··¢ÉúÁ˱仯£¬TotalAmountÊôÐԾͻá¸üС£Õâ½â¾öÁ˵ÚÒ»¸öÎÊÌ⣬µ«µ¼ÖÂÁËÉÏÃæÁгöµÄµÚÈý¸öÎÊÌâ¡£
2.2. ͬһ¸öÏîÓв»Ö¹Ò»¸ö¶ÔÏó
Ó¦ÓóÌÐòºÍÊý¾Ý¿âÖ®¼äµÄͨÐÅËÙ¶ÈÊÇ×î´óµÄÐÔÄÜȱÏÝÖ®Ò»¡£ÎªÁ˼õÉÙ´«ÊäµÄÊý¾ÝÁ¿£¬ÓÐЩ´ó±í¿ÉÄÜ»áÓÐÁ½¸ö»òÁ½¸öÒÔÉϵÄORMÀà¡£
Ò»¸ö¼òµ¥µÄÀý×Ó£¬ÏÂ±í£º
CREATE TABLE Cars ( ID int, Driver varchar, PlateNumber varchar, Brand varchar, Model varchar, Kit varchar, Color varchar, Engine decimal, Travelled int, Year int, Cost decimal, FuelConsumption decimal ) |
¿ÉÄÜ»á²úÉúÁ½¸ö³¡¾°£º
a£©ÏÔʾËùÓÐÆû³µµÄÁÐ±í¡ª¡ªÐèÒªËùÓÐ×ֶΣ»
b£©ÔÚÒ»¸ö×Ô¶¯Íê³É×Ö¶ÎÖÐÏÔʾÆû³µÁÐ±í¡ª¡ªÖ»ÐèÒªID¡¢DriverºÍPlateNumberÖµ¡£
Èç¹ûÕâÁ½ÖÖÇé¿öʹÓÃÏàͬµÄORMÀ࣬ÄÇô£¬¼´Ê¹Æû³µÀàµÄËùÓÐ×Ö¶ÎÖµ²»»á¶¼Óõ½£¬Ò²»áÈ«²¿´ÓÊý¾Ý¿â¼ÓÔØµ½Ó¦ÓóÌÐò¡£ÕâÒâζ×Å´«ÊäÁ˸ü¶àµÄÊý¾Ý¡¢ÏûºÄÁ˸ü¶àµÄʱ¼ä£¬×îÖÕ¾ÍÒª³Ðµ£¿Í»§²»ÂúÒâµÄ·çÏÕ¡£
Èç¹ûÕâÁ½ÖÖÇé¿öʹÓò»Í¬µÄORMÀ࣬¾Í»áÎ¥·´DDDģʽ¡£µ±Ó¦ÓóÌÐò±»·Ö³É²»Í¬µÄ²¿·Ö£¬¾Í»áµ¼ÖÂÎÊÌâ¡£Èç¹û±íCarsλÓÚÓ¦ÓóÌÐòÖ®ÄÚ£¬Õâ¸öÎÊÌâ¾Í²»´æÔÚÁË¡£
2.3. ÓеĶÔÏóµÄÊôÐÔʵ¼ÊÉϲ»ÊÇÄǸö¶ÔÏóµÄ»ù±¾ÊôÐÔ
ͨ³££¬Éî¶ÈǶÌ×ÐèÒªÈßÓàÊôÐÔÀ´ÌáÉýÐÔÄÜ¡£

ÕâÊÇÒ»¸ö¼òµ¥ÇÒ³£¼ûµÄÄ£ÐÍ¡£ÏÖÔÚ¼ÙÉ裬ÎÒÃÇÓÐÒ»Ïîµ÷²é£¬²¢ÇÒÐèÒª²éѯµ÷²éµÄËùÓÐÎÊÌâ¡£
SQLµÄд·¨ÈçÏ£º
SELECT Question.* FROM Question INNER JOIN Section ON Question.SectionID = Section.ID INNER JOIN Page ON Section.PageID = Page.ID INNER JOIN Survey ON Page.SurveyID = Survey.ID WHERE Survey.ID = ? |
LINQ²éѯµÄд·¨ÈçÏ£º
Context.Questions.Where(q => q.Section.Page.SurveyID = ?); |
ÄÇô£¬Õâ¸ö²éѯÓÐʲôÎÊÌâÄØ£¿ÓÐÐÔÄÜÎÊÌâ¡£
¿´ÏÂÏÂÃæÕâÕÅͼ¡£ÕâÕÅͼ¿´ÉÏÈ¥Òª¸´ÔÓһЩ£¬ÒòΪÓÐËĸöÈßÓà¹ØÏµ¡£

ÓÉÓÚÌí¼ÓÁËÆäËûµÄ¹ØÏµ£¬SQL²éѯ±ä³ÉÁËÏÂÃæµÄÑù×Ó£º
SELECT * FROM Question WHERE Question.SurveyID = ? |
ÎÒÃÇΪʲôÐèÒªÄÇЩÈßÓàÊôÐԺ͹ØÏµÄØ£¿´ð°¸ºÜ¼òµ¥£ºÎªÁËÌáÉýÐÔÄÜ¡£Èç¹ûµÚÒ»ÖÖ·½·¨ÔËÐеÃ×ã¹»¿ì£¬ÎÒÃÇ»¹»áÌí¼ÓÄÇЩ¹ØÏµÂ𣿵±È»²»»á¡£
2.4. Ïà¹ØÏîÎÞ·¨ºÜºÃµØÐµ÷
Ï໥¹ØÁªµÄÁ½¸ö±í¿ÉÒÔ×÷ΪÕâ¸öÎÊÌâµÄÒ»¸öÀý×Ó¡£
TABLE A (ID, Name, BID); TABLE B (ID, Name, AID); |
²åÈëÁ½ÐÐÏ໥¹ØÁªµÄ¼Ç¼ÐèÒªÈý¸ö²Ù×÷£º
Insert row A. Insert row B with AID. Update BID of row A. |
Õâ¶Î´úÂëÔÚORM±íÀàÀïÊÇÐв»Í¨µÄ£º
var a = new A(); var b = new B();
a.Name = ¡°Instance of A with B¡±;
a.B = b;
b.Name = ¡°Instance of B with A¡±;
b.A = a;
Context.SaveChanges(); |
Õ⻹ÊÇÒòΪÀàºÍ±íÖ®¼äµÄת»»¡£SQLÊý¾Ý¿âÒýÇæ²»Ö§³Öͬʱ²åÈëÁ½Ðлò¶àÐÐÊý¾Ý¡£
ÁíÒ»¸öÀý×ÓÊÇ¡°¶àÖØÑ¡Ôñ£¨multi-select£©¡±Öµ¡£
TABLE Motherboard ( ID int, Brand varchar, Socket varchar, Ram varchar, Name varchar );
TABLE CPU (
ID int,
Brand varchar,
Socket varchar,
Name varchar
);
--Ö÷°åÖ§³ÖµÄCPU
TABLE MotherboardCpu (
ID int,
MotherboardID int,
CpuID int
); |
µ±Ò»¶¨»áÑ¡Ôñ¶àÐÐʱ£¬ÀýÈ磬µ±ÐèÒª²éѯËùÓÐÖ÷°å¼°ÆäÖ§³ÖµÄCPUʱ£¬µ±Í¨¹ýCPUÃû³Æ¹ýÂËʱ£¬´ÓMotherboardCpu±í²éѯ²¢´¦ÀíÊý¾Ý»áÏÔÖøµØ½µµÍÐÔÄÜ¡£
¿ª·¢ÈËԱͨ³£»áʹÓÃÏÂÃæµÄÊý¾ÝÄ£ÐÍÌæ»»ÉÏÊöÄ£ÐÍ£º
TABLE Motherboard ( ID int, Brand varchar, Socket varchar, Ram varchar, Name varchar, --ÒÔCSV/JSON¸ñʽÁгöÖ§³ÖµÄCPUÃû³Æ Cpu text );
TABLE Cpu (
ID int,
Brand varchar,
Socket varchar,
Name varchar
); |
´ÓÁìÓòÉè¼ÆµÄ½Ç¶È¿´£¬MotherboardºÍCPUÊÇÁ½¸öÏà¹ØµÄʵÌ壬µ«ËüÃÇÔÚÊý¾Ý¿âÀïûÓÐÈκιØÏµ¡£
2.5. ÎÞ·¨Í¨¹ý²é¿´¶ÔÏóÁ˽âÕû¸öÓ¦ÓÃ
ÏÂÃæµÄÀý×ÓÊÇÒ»¸öÏîÄ¿ÖеÄʵÌåͼ¡£

ÏîÄ¿ÖеÄÿÕÅ±í¶¼ÐèÒªÒ»¸öORMÀà¡¢Ò»¸öJSON±íʾÀàºÍÒ»¸öJavaScriptÀࡣÿ¸ö±íÈý¸öÀ࣬¶øÇÒ±íÒ²ÄÑÒÔά»¤¡£¿ª·¢ÈËÔ±¾ö¶¨½«½«ËùÓеÄ״̬ºÍÀàÐÍ´æµ½Ò»ÕűíÀ´Ó¶ø¼õÉÙ±íµÄÊýÁ¿¡£×îºó£¬Êý¾Ý±íͼÈçÏ£º

ʵÌåͼºÜÇåÎú£¬Ò»Ä¿ÁËÈ»£¬¶øÊý¾Ý±íͼÔòÏ൱ÄÑÀí½â¡£¿ò¼ÜµÄÏÞÖÆµ¼Ö¿ª·¢ÈËÔ±ÐèÒªÔÚÊý¾Ý¿â´¿¾»¶ÈºÍ´úÂë´¿¾»¶ÈÖ®¼ä½øÐÐÈ¡Éá¡£
Starcounter
ÏÂͼչʾÁËStarcounterµÄ¼Ü¹¹¡£

¸ÃͼչʾÁËÔËÐÐÔÚÊý¾Ý¿âÀïµÄStarcounterÓ¦ÓóÌÐò£¬Ëü¿ÉÒÔÖ±½Ó·ÃÎʱ£´æÔÚRAMÖеÄÊý¾Ý¿â¶ÔÏó¡£
Êý¾Ý²»ÐèÒªÔÚÊý¾Ý¿âºÍÓ¦ÓóÌÐòÖ®¼äÍù·µ¡£Ó¦ÓóÌÐòÀ༴Êý¾Ý¿â¶ÔÏó¡£ÓÐÁËStarcounter£¬¾Í²»ÐèÒªORM»òÆäËûÓ³ÉäÆ÷ÁË¡£
ÏÂÃæÊÇÒ»¸öÊý¾Ý¿âÀඨÒå¡£
[Database] public class Vehicle { public string PlateNumber; public string Brand; public string Model; } |
ûÓÐÉÏÏÂÎÄÉùÃ÷£¬Ã»ÓбíÃû»òÕßÊôÐÔÃûÓ³ÉäÆ÷£¬ÓеÄÖ»ÊÇ´øÓÐÊôÐÔµÄC#Àà¡£ÏÂÃæÊÇÁíÍâÒ»¸ö´øÓÐÍâ¼üµÄÀý×Ó¡£
[Database] public class VehicleStatus { public string Name; }
[Database]
public class Vehicle {
public string PlateNumber;
public string Brand;
public string Model;
public VehicleStatus Status;
} |
Çé¿ö»¹ÊÇÒ»Ñù¡£Ã»ÓÐÍâ¼üÉùÃ÷£¬Ã»ÓÐÓ³É䣬ÓеÄÖ»ÊÇC#ÊôÐÔ¡£ÏÖÔÚÈÃÎÒÃÇ¿´Ï£¬Starcounter½â¾öÁËÉÏÊöÄÄЩÎÊÌ⣿
1.1. ÒÆ³ýÓ¦ÓóÌÐòÖеÄËùÓÐSQL´úÂë
Ŀǰ£¬StarcounterÈÔÈ»ÐèҪʹÓÃһЩSQL´ÓÊý¾Ý¿âÖвéѯ¶ÔÏó¡£²»¹ý£¬ÄãÐèÒª±àдµÄSQLÊýÁ¿´ó·ù¼õÉÙ£¬ÒòΪÄã¿ÉÒÔ×·×ÙÊôÐÔ£¬´ÓÒ»¸ö¶ÔÏóµ½ÏÂÒ»¸ö¶ÔÏ󣬶ø²»±ØÊ¹ÓÃÁªºÏ»ò¶àÖØ²éѯ¡£
1.2. Ϊ·ÃÎÊÊý¾Ý¿â±íÌṩºÍ·ÃÎÊÆÕͨµÄÓ¦ÓóÌÐòÀàÒ»ÑùµÄ·½Ê½
Êǵ쬾ø¶ÔµÄ¡£
Êý¾Ý¿â¶ÔÂß¼¸´ÔÓµÄÖ»¶ÁÊôÐÔÌṩÁËÍêȫ֧³Ö¡£ÓÉÓÚC#¶ÔÏó¼´Êý¾Ý¿â¶ÔÏó£¬ËùÒÔ²»´æÔÚÈκÎÊý¾ÝÀàÐÍÎÊÌâ¡£
1.3. Ϊ²»ÐÞ¸ÄÓ¦ÓóÌÐò´úÂëÇл»Êý¾Ý¿âÒýÇæÌṩ¿ÉÄÜ
²»£¬´úÂëÐ޸ĺ͵÷ÕûÊDZØÐèµÄ¡£StarcounterʹÓÃÒ»ÖÖÓ봫ͳÊý¾Ý¿âÒýÇæÍêÈ«²»Í¬µÄ·½·¨¡£
2.1. ÏîÄ¿ÖÐÏàͬµÄ¹¦ÄÜ£¬ÆäʵÏÖ·½Ê½Ïàͬ»òÕßÔÚ²»Í¬µÄµØ·½²»Í¬£»
StarcounterûÓÐÊý¾Ý¿â¶ËºÍÓ¦ÓóÌÐò¶Ë¡£Êý¾Ý¿â¶ÔÏó¼´Ó¦ÓóÌÐò¶ÔÏ󣬷´Ö®ÒàÈ»¡£¶øÇÒ£¬´ó¶àÊýStarcounterÓ¦ÓóÌÐòÔÚ·þÎñÆ÷ºÍ¿Í»§¶ËÖ®¼ä¹²ÓÃÏàͬµÄÄ£ÐÍ¡£JavaScript¿âPuppetJs¸ºÔðͬ²½·þÎñÆ÷ºÍ¿Í»§¶ËÖ®¼äµÄ±ä»¯¡£
×îºó£¬Ö»ÓÐÒ»¸öÄ£ÐÍÀ࣬һ¸öµØ·½±àдÂß¼£¬½µµÍÁËÔÚ²»Í¬µØ·½±àдÏàͬÂß¼µÄ¿ÉÄÜÐÔ¡£
2.2. ͬһ¸öÏîÓв»Ö¹Ò»¸ö¶ÔÏó
²»ÐèҪΪÊý¾Ý¿â¶ÔÏó´´½¨ÈκζîÍâµÄÀà»òÓ³ÉäÆ÷£»Õû¸öÏî¿ÉÒÔÖ±½Ó´ÓÄÚ´æ·ÃÎÊ¡£
2.3. ÓеĶÔÏóµÄÊôÐÔʵ¼ÊÉϲ»ÊÇÄǸö¶ÔÏóµÄ»ù±¾ÊôÐÔ
Èç¹ûÿ¸ö¶ÔÏóµÄÿ¸öÊôÐÔ¶¼¿ÉÒÔÖ±½Ó·ÃÎÊ£¬¶øÇҺܼòµ¥£¬¾Í²»ÐèÒª´´½¨¶îÍâµÄÊôÐÔ¡£CPUÀàÓ¦¸ÃÓÐÒ»¸öMotherboardµÄÒýÓã¬MotherboardÀàÓ¦¸ÃÓÐÒ»¸öPC
CaseµÄÒýÓ㬵«CPUÀ಻Ӧ¸Ã°üº¬ÈκÎPC CaseµÄÒýÓá£
2.4. Ïà¹ØÏîÎÞ·¨ºÜºÃµØÐµ÷
Ó봫ͳSQLÊý¾Ý¿â²»Í¬£¬StarcounterÔÊÐíÄãͬʱ´æ´¢Á½¸öÏà¹Ø¶ÔÏó¡£ÏÂÃæµÄ´úÂë¿ÉÒÔÕý³£ÔËÐУº
Db.Transact(() => { var a = new A(); var b = new B();
a.Name = "Instance of A with B";
a.B = b;
b.Name = "Instance of B with A";
b.A = a;
}); |
¶àÖØ²éѯÊôÐÔµÄÎÊÌâ¸üÈÝÒ×½â¾ö£º
[Database] public class Motherboard { public string Brand; public string Socket; public string Ram; public string Name;
public IEnumarable<MotherboardCpu>
MotherboardCpus {
get {
return Db.SQL<MotherboardCpu>("
SELECT o FROM MotherboardCpu o WHERE o.Motherboard
= ?", this);
}
}
public string MotherboardCpuNames {
get {
return string.Join(", ", this.MotherboardCpus.Select(x
=> x.Name));
}
}
}
[Database]
public class Cpu {
public string Brand;
public string Socket;
public string Name;
}
[Database]
public class MotherboardCpu {
public Motherboard Motherboard;
public Cpu Cpu;
} |
Ö»¶ÁÊôÐÔMotherboardCpuNamesÍêÈ«¿ÉÒÔÔÚÊý¾Ý¿â²ãÃæ·ÃÎÊ¡£ÏÂÃæµÄSQL²éѯÊÇÓÐЧµÄ£¡
var motherboards = Db.SQL<Motherboard>( "SELECT o FROM Motherboard o WHERE o.MotherboardCpuNames LIKE ?", "%i7-5___%"); |
×¢Ò⣺×Ö·û´®Á¬½ÓÊÇÒ»ÏîÐÔÄÜ´ú¼ÛºÜ¸ßµÄÈÎÎñ¡£Ê¹ÓÃÎñ±ØÒªÇ¡µ±¡£
ÏÂÃæÕâ¸ö²éѯÊÇÉÏÊö²éѯµÄÁíÒ»¸ö°æ±¾£¬ËٶȱÈÉÏÊö²éѯ¿ì25±¶£º
var motherboards = Db.SQL<Motherboard>( "SELECT c.Motherboard FROM MotherboardCpu c WHERE c.Cpu.Name LIKE ?", "%i7-5%").Distinct(); |
2.5. ÎÞ·¨Í¨¹ý²é¿´¶ÔÏóÁ˽âÕû¸öÓ¦ÓÃ
StarcounterÌṩÁËÒ»ÖÖ¼ò½àµÄ·½Ê½£¬Èÿª·¢ÈËÔ±¿ÉÒÔ¸ù¾ÝÐèÒª´´½¨ÈÎÒâ¶àµÄÊý¾Ý¿âÀࡣʹÓÃʲôÑùµÄÉè¼ÆÄ£Ê½£¬Ó¦ÓÃʲôÑùµÄ¼Ü¹¹£¬ÍêÈ«ÓÉ¿ª·¢ÈËÔ±¾ö¶¨¡£
С½á
¶ÔÓÚÄÇЩ¾Àú¹ýÉÏÊöÈκÎÎÊÌâµÄ¿ª·¢ÈËÔ±¡¢Ð¡ÐÍ´´Òµ¹«Ë¾»òÕß´óÐÍÆóÒµÀ´Ëµ£¬ÏÖÔÚÓнâ¾ö·½°¸ÁË¡£´ÓÎÒ¸öÈ˵ľÑéÀ´¿´£¬ÎÒÓùýASP.NET
MVC£¬ÇãÏòÓÚ²»Ê¹ÓÃPHP£¬×ðÖØRuby on Rails¡£ÏÖÔÚ£¬ÎÒÎÞ·¨ÏëÏóÇÐ»ØÆäÖÐÈκÎÒ»Ïî¼¼Êõ²¢±àд´óÁ¿µÄ½ºË®´úÂë¡£