§A¥²¶·´x´¤ªºEntity Framework 6.x»PCore 2.0 ( ²Åé ¦r) |
§@ªÌ¡G¨LÄP | Ãþ§O¡G1. -> µ{¦¡³]p -> ºî¦X |
ĶªÌ¡G |
¥Xª©ªÀ¡G²MµØ¤j¾Ç¥Xª©ªÀ | 3dWoo®Ñ¸¹¡G 49184 ¸ß°Ý®ÑÄy½Ð»¡¥X¦¹®Ñ¸¹¡I¡i¯Ê®Ñ¡j NT°â»ù¡G 495 ¤¸ |
¥Xª©¤é¡G7/1/2018 |
¶¼Æ¡G |
¥úºÐ¼Æ¡G0 |
|
¯¸ªø±ÀÂË¡G |
¦L¨ê¡G¶Â¥Õ¦L¨ê | »y¨t¡G ( ²Åé ª© ) |
|
¥[¤JÁʪ«¨® ¢x¥[¨ì§Úªº³Ì·R (½Ð¥ýµn¤J·|û) |
ISBN¡G9787302500179 |
§@ªÌ§Ç¡@|¡@ĶªÌ§Ç¡@|¡@«e¨¥¡@|¡@¤º®e²¤¶¡@|¡@¥Ø¿ý¡@|¡@§Ç |
(²Åé®Ñ¤W©Òz¤§¤U¸ü³sµ²¯Ó®É¶O¥\, ®¤¤£¾A¥Î¦b¥xÆW, YŪªÌ»Ýn½Ð¦Û¦æ¹Á¸Õ, ®¤¤£«OÃÒ) |
§@ªÌ§Ç¡G |
ĶªÌ§Ç¡G |
«e¨¥¡G¥»®ÑI´º ¦bWeb¶}µo¤¤¡AASP.NET MVC¨Ï¥Î¬Û·í¼sªx¡A»P¤§©IÀ³ªº¬O¨Ï¥ÎORM®Ø¬[Entity Framework§@¬°·§©À¤Wªº¼Æ¾Ú³X°Ý¼h¡A¥Ø«e¦³¨Ç¤¬Ápºô©Û¸u¤½¥q©Û¸u®É·|©ú½Tn¨D¼ô½m´x´¤Entity Framework¡C«Ü¦h¤H¹ïEntity Framework¶á¤§¥H»ó¡A¤£¥i§_»{¡AEntity Frameworkªº©Ê¯à½T¹ê¬O¤@Ó¥O¤HÀY¯kªº°ÝÃD¡A¦ý¬OÁÙ¥¼¨ì±ó¥Îªº¦a¨B¡A¤j³¡¤À±¡ªp¤UÁÙ¬O§Ú̪º»{ÃѤӯB¤_ªí±¡A¨S¦³²`¨sì²z¡A¬Ý²M¨ä¥»½è¡C·L³n¬°§Ú̫ʸˤF¤@¤Á¡A§ÚÌ¥u»Ý¶i¦æ¶Ì¥Ê¦¡ªº¾Þ§@§Y¥i¡A¦ý¬O³Ì²×±a¨Óªº«o¬OºÆ¨g¦R¼Ñ¡A½Ð²`¤J«ä¦Ò¦Û¤v¹ïEntity Framework¬O§_¦³¨¬°÷¤F¸Ñ¡Cµ§ªÌ¬Ý¹L¦}·j¯Á¹L«Ü¦hÃö¤_Entity Framework©MEntity Framework Coreªº³Õ«È¡Aµo²{¤j³¡¤À¤º®e¤¶²Ðªº¤Ó¹L²LÅã¡A¾Ç²ß¤@ªù·s§Þ³N»Ýnªº¬O²ÓÄZºC«|¦Ó«D§zÔ¬§]´Ç¡C¹ï¤_¤¤¤åª©ªºEntity Framework©MEntity Framework Core¡A¥«±¤W´X¥G¨S¦³¤@¥»µÛ§@¶i¦æ¬ÛÃö¤¶²Ð¡A¾ÉP«Ü¦h¤H³£¬O¸òµÛ§O¤Hªº¸}¨BÅ¢²Î¦a¾ÇµÛ¡A¥B¤@ª¾¥b¸Ñ¡B¤£ª¾©Ò¤ª¡C°ò¤_¥H¤W´XÂI¡Aµ§ªÌ¥´ºâºÉ³Ì¤jªº¯à¤O¤À¨É¦Û¤v©Ò²z¸ÑªºEntity Framework©MEntity Framework Core¡AÅý¤j®a¯à°÷´`§Çº¥¶i¦}¨t²Î¦a¾Ç²ß¡C ¥»®Ñ¯SÂI ¥»®Ñ¤¤Entity Framework©MEntity Framework Coreªº¤º®e§¹¥þ¤£¬O±q©x¤èºô¯¸ºK§Û©M½Ķ¦Ó¨Ó¡A¦pªG§A¬Ý¹L©x¤èºô¯¸ªº¥Ø¿ý¤¶²Ð´N·|µo²{©Mµ§ªÌ©Ò¦CÁ|ªº¥Ø¿ýºIµM¤£¦P¡A±q°ò¦¨ì¶i¶¥³£¸g¹Lµ§ªÌªººë¤ß½s±Æ¡A¦P®É¤@¤Á¤º®e³£¤£·|»f¸»ÂI¤ô¦üªºªxªx¦Ó½Í¡A§¡µ²¦X¹ê»Ú¤p«¬®×¨Ò¦³²z¦³¾Ú½×ÃÒ¦Ó¨Ó¡A´x´¤°ò¦¬O¥²³Æ«e´£¡A¦b§¹µ½°ò¦ªº¥R¤À±ø¥ó¤U¡A§A·|¶i¤@¨B²`¤J°ò¦¡Cì²z¬O¥²n±ø¥ó¡A¦b´x´¤ì²zªº±ø¥ó¤U¡A±q§l¦¬¨ì®ø¤Æ¤~¬O³Ì²×ªºÂk±J¡C¦pªG§A¦b¹ê»Ú¶µ¥Ø¤¤¥¿¦b¥ÎEntity Framework 6.x¡A¬Û«HEntity Framework 6.xªº¤º®e·|¹ï§A¦³¶i¤@¨B´£°ª¡A¦pªG§AÁÙ¦b¾á¤ßEntity Framework 6.xªº©Ê¯à¡A¨º¤\¥i¾\ŪEntity Framework Core 2.0ªº¤º®e¡A¬Û«H·|Åý§A¨í¥Ø¬Û¬Ý¡C ¥»®ÑŪªÌ ¥»®ÑEntity Framework 6.xªº¤º®e¾A¦X·Q§Ö³t´£°ªªºªì¾ÇŪªÌ¡B·Q°ò¦¬B¿òªº¦^ÄlŪªÌ¡B·Q¶i¤@¨B´£°ªªº¶i¶¥ÅªªÌ¡A¦ÓEntity Framework Core °w¹ï¤w¸ó¥»Oªº.NET CoreÀ³¹B¦Ó¥Í¡A¹ï¤_·Qn¾Ç²ß·s§Þ³Nªºªì¾ÇŪªÌ©M¤w¦b¶µ¥Ø¤¤À³¥Î¦Ó»Ý¶i¤@¨B²`¤Jªº¶i¶¥ÅªªÌ§¡¨ã¦³«Ü±jªº°Ñ¦Ò©M¾Ç²ß»ùÈ¡A¦P®É°ªµ¥°|®Õ©M.NET§Þ³N°ö°V¾÷ºc¤]¥i¿ï¾Ü¥»®Ñ§@¬°°Ñ¦Ò±Ð§÷¡C ¥N½X¡B°É»~©M¤ä«ù ¥»®Ñ¤¤ªº¹ê¨Ò¥N½X¤w¤W¶Ç¦ÜGithub¤W¡C ÁöµMµ§ªÌ¯Ó¶O¤j¶q®É¶¡¹ï®Ñ½Z¶i¦æ¤Ï´_ªº×§ï©M±ÀºV¡A¦ý¬O¤ô¥¦³¡A¤´Ãø§K¦³²¨º|¤§³B¡A¬°¤F¨Ï¥»®Ñ¯à°÷§ó¦n¦a¬°ÅªªÌªA°È¡A¦pªG¦³°ÝÃD¡A¥i³q¹LQQ¶l½c»Pµ§ªÌªº³Õ«È»P¥»¤HÁp¨t¡Cµ§ªÌ±NºÜ¤O¸Ñ¨M©Ò¦³°ÝÃD¡A¦}¦V§Aªº«ü¥¿PÁ¡C PÁ ·PÁ®L·¶«Û½s¿è¥H¤Î¥Xª©ªÀ¨ä¥L¤H¹ï¥»®Ñ©Ò°µªº¤u§@¡A¥¿¬O§A̪º°^Äm¨Ï±o³o¥»®Ñ±o¥H¥Xª©¡C§AÌ©Ò°µªº¤u§@´£¤É¤F¥»®Ñªº½è¶q©M·Ç½T©Ê¡A¨Ï¥»®Ñªº«~½è¯à°÷±o¨ì«OÃÒ¡A¤]Åýµ§ªÌ§ó¥[¦³«H¤ß±N¦Û¤v¹ï§Þ³Nªº²z¸Ñ®i¥Üµ¹»ÝnªºÅªªÌ¡C ¼g¦n¤@¥»®Ñ©Ò§ë¤Jªººë¤O©M®É¶¡µLªk¦ô¶q¡A¨S¦³®a¤Hªº¤ä«ù©M¤k¤Íªº²z¸Ñ¡A³o¥»®Ñ¤£¥i¯à±¥@¡C·PÁ§ڪº¤÷¿Ë¡B¥À¿Ë¡Bôô¡B©j©j¡A¥L̥û·¬O§ÚÂk±Jªº´äÆW¡A¬O§Ú¤H¥Íªº¤äÂI©M©ú¿O¡AÁÂÁÂ¥LÌùÚ¤[¤£Åܪº¤ä«ù¡C¯S§O·PÁ§ڪº¤k¤Í¼Bº½¡A¦]¬°¼g§@¥»®Ñªá¶O¤F¤j¶q®É¶¡¦Ó©¿²¤¤F¹ï¦oªºÃö¤ß¡A·PÁ¦oªºÅé¶K¤J·L¡C²{¦b¡A¥»®Ñºâ¬O§i¤@¬q¸¨¡A²×¤_¦³®É¶¡¥h¦h³³¦o¤F¡C ·íµM¡A³Ì«nªº¬O·PÁ¤@ª½¥H¨ÓÃöª`µ§ªÌªº¦P¦æ§Þ³NªÌ¡A¬O¥L̪º¹ª»R©MªÖ©w¨Ï±oµ§ªÌ¦b§Þ³N¸ô¤W¨«±o§ó»·¡A·PÁ³իȶ鵹¤©ªº¥»O¡AÅýµ§ªÌ¯à°÷¾Ç²ß©M¤À¨É¦Û¤vªº¨£¸Ñ¡A¦P®É¤]·PÁ¿ï¾Ü¥»®ÑªºÅªªÌ¡A¬Û«H¥»®Ñ¯à°÷Åý§A¦³©Ò¦¬Àò¡C T-SQL»y¨¥ªº¨âºØ¤ä ¨L ÄP 2018¦~1¤ë |
¤º®e²¤¶¡G¡m§A¥²¶·´x´¤ªºEntity Framework 6.x»PCore 2.0 ¡n°w¹ïEntity Framework 6.x©MEntity Framework Core 2.0¥H³q«U©öÀ´ªº»y¨¥¶i¦æ²`¤J¡B¥þ±ªº±´°Q¡A¦}µ²¦X¹ê¨Ò¨Ó¤¶²Ð¦p¦óÆF¬¡¹B¥Î¡C ¡m§A¥²¶·´x´¤ªºEntity Framework 6.x»PCore 2.0 ¡n¦@¥|½g¡A¤º®e¤À¬°19³¹¡A²Ä¤@½g¡]²Ä1~3³¹¡^Á¿zEntity Framework 6.x°ò¦¡A¦}²`¤JÁ¿¸Ñ¦p¦ó³Ð«Ø¹LÂo¯Á¤Þ¡B¾E²¾ªº¥»½èµ¥¡F²Ä¤G½g¡]²Ä4~8³¹¡^Á¿zEntity Framework 6.x¶i¶¥¡A¥R¤ÀÄÄzEntity Framework 6.xI¦ZÁôÂêºì²z¡B©Ê¯àÀu¤Æ¡B¦}µo¸ÑªRµ¥¡F²Ä¤T½g¡]²Ä9¡B10³¹¡^Á¿zEntity Framework Core 2.0°ò¦¡A¦}¹ïEntity Framework Core¨C¤@ª©¥»©Ò¥X²{ªº·s¯S©Ê¶i¦æ¸Ô²Ó¤¶²Ð©M²`¤J¬ã¨s¡F²Ä¥|½g¡]²Ä11~19³¹¡^Á¿zEntity Framework Core 2.0¶i¶¥¡A¤º®e¥]¬AEntity Framework CoreÅܧó°lÂܵ¦²¤¡B³Ð«Ø¤W¤U¤å¹ê¨Ò¤è¦¡¡B©Ê¯àÀu¤Æ¡Aµ²¦XEntity Framework Core 2.0¯S©Ê¹ê²{¦h¯²¤á¼Ò¦¡¡A§Q¥ÎEntity Framework Core¶i¦æ¼Æ¾Ú¼fp¡B¦}µo¸ÑªRµ¥¡C ¡m§A¥²¶·´x´¤ªºEntity Framework 6.x»PCore 2.0 ¡n¾A¦XASP.NET¶}µo¤Hû¾\Ū¡A¤]¾A¦X°ªµ¥°|®Õ©M°ö°V¾Ç®Õ¬ÛÃö±M·~ªº®v¥Í§@¬°±Ð¾Ç°Ñ¦Ò®Ñ¡C |
¥Ø¿ý¡G²Ä¤@½gEntityFramework6.x°ò¦ ²Ä1³¹EntityFrameworkªºµo®i 3 1.1EntityFrameworkª©¥»¤¶²Ð 3 1.2EntityFramework»â°ì«Ø¼Ò¤è¦¡ 4 1.2.1CodeFirst 4 1.2.2ModelFirst 5 1.2.3DatabaseFirst 5 1.3¨Ï¥ÎEntityFrameworkCodeFirst6.xªºì¦] 6 1.4¤pµ² 6 ²Ä2³¹¼Æ¾Ú®wªíªº³Ð«Ø©M¾E²¾ 7 2.1¼Æ¾Ú®w³s±µ©Mªì©l¤Æµ¦²¤ 7 2.1.1¼Æ¾Ú®w³s±µ 7 2.1.2¼Æ¾Ú®wªì©l¤Æµ¦²¤ 10 2.2¬ù©w 11 2.2.1Ãþ«¬µo²{ 11 2.2.2¥DÁä¬ù©w 12 2.2.3Ãö¨t¬ù©w 13 2.2.4´_ÂøÃþ«¬¬ù©w 14 2.2.5¦Û©w¸q¬ù©w 15 2.3°ò¤_¥N½X°t¸m 22 2.4°t¸mÄݩʬM®g©MÃö¨t¬M®g 24 2.4.1ÄݩʬM®g 25 2.4.2Ãö¨t¬M®g 42 2.4.3¨p¦³¤ÆÄݩʬM®g 56 2.5Ä~©Ó¬M®gµ¦²¤ 58 2.5.1TableperHierarchy¡]TPH¡^ 58 2.5.2TableperType¡]TPT¡^ 59 2.5.3TableperConcreteclass¡]TPC¡^ 62 2.5.4EntitySplitting 65 2.5.5TableSplitting 67 2.6¥N½X¾E²¾ 69 2.6.1¾E²¾©R¥O 69 2.6.2¾E²¾ªº¥»½è 73 ²Ä3³¹¹êÅ骬ºA©M¼Æ¾Ú¾Þ§@ 82 3.1¹êÅ骬ºA 82 3.2¼Æ¾Ú¾Þ§@ 84 3.2.1¼Æ¾Ú¬d¸ß 85 3.2.2¼Æ¾Ú«O¦s 102 3.2.3¦Û°Ê¥Í¦¨¦sÀx¹Lµ{ 112 3.3ÁקK³´¨À 115 3.3.1¾É¯èÄݩʬd¸ß 115 3.3.2¤À¶¬d¸ß 116 3.3.3»y¸q¥iªÅ 117 3.3.4ªíȨç¼Æ 119 3.3.5¤é´Á¾Þ§@ 121 3.4°ò¦½g¹ê¾Ô 122 ²Ä¤G½gEntityFramework6.x¶i¶¥ ²Ä4³¹¤W¤U¤åºÞ²z©MÅܧó°lÂÜì²z 137 4.1¤W¤U¤å¥Í©R©P´ÁºÞ²z 137 4.1.1°ò¦¼Ò¦¡°l·¹ 137 4.1.2¥Í©R©P´Á°l·¹ 139 4.1.3¶i¤Æ¼Ò¦¡°l·¹ 142 4.2Åܧó°lÂÜì²z 144 4.2.1§Ö·Ó¦¡Åܧó°lÂÜ 144 4.2.2¥N²z¦¡Åܧó°lÂÜ 146 ²Ä5³¹Åܧó°lÂÜì²z©M¤é§ÓºÞ²z 155 5.1DetectChangesì²z 155 5.1.1DetectChangesªº¥Î³~ 155 5.1.2½Õ¥ÎDetectChanges¤èªkªº®É¾÷ 157 5.1.3Ãö³¬¦Û°Ê½Õ¥ÎDetectChanges¤èªk 159 5.1.4¿ò§Ñªº¤G¶i¨îÄÝ©Ê©M´_ÂøÃþ«¬ 162 5.2¤é§Ó°O¿ý 165 5.2.1ToString¥´¦L 165 5.2.2²³æ¤é§Ó¥´¦L 166 5.2.3µ²ºc¤Æ¤é§Ó¿é¥X 169 5.2.4ºc³y¶ôÄdºI 171 5.2.5ÄdºI¾¹²§±`©Ê¯àºÊ±± 175 5.2.6ÄdºI¾¹¸Ñ¨MEF6.1©¿²¤¦r²Å¦êªÅ®æ¾ú¥v¿ò¯d°ÝÃD 187 5.3¨Æ°È 191 5.4³s±µ¼u©Ê 212 ²Ä6³¹¦}µo¨R¬ð 217 6.1ªì¯Åª©¸ÑªR 217 6.2¤¤¯Åª©¸ÑªR 222 6.2.1«È¤áºÝÀò³Ó 223 6.2.2¼Æ¾Ú®wÀò³Ó 224 6.2.3«È¤áºÝ©M¼Æ¾Ú®w¦X¦}Àò³Ó 225 6.3°ª¯Åª©¸ÑªR 226 6.3.1²³æ«¸Õµ¦²¤ 226 6.3.2Polly«¸Õµ¦²¤ 227 ²Ä7³¹©Ê¯àÀu¤Æ¹ê½î 231 7.1Àu¤Æ¤@¡G¹w½sĶµø¹Ï 231 7.2Àu¤Æ¤G¡G´î¤Öº¦¸»P¼Æ¾Ú®w¥æ¤¬ªº¥N½X 235 7.3Àu¤Æ¤T¡GNGen¦w¸ËEntityFrameworkµ{§Ç¶° 237 7.4Àu¤Æ¥|¡GAsNoTracking 239 7.5Àu¤Æ¤¡G½w¦s 239 7.6Àu¤Æ¤»¡G«·s½sĶ¬d¸ß 245 7.7Àu¤Æ¤C¡GÁקK¡§N+1¡¨Select¬d¸ß 249 7.8Àu¤Æ¤K¡G²K¥[¯Á¤Þ 251 7.9Àu¤Æ¤E¡GÃö³¬¦^½ÕDetectChanges¤èªk 255 7.10Àu¤Æ¤Q¡G¨Ï¥Î²§¨B¬d¸ß 257 ²Ä8³¹EntityFramework6.x¹ê¾Ô 258 8.1¤u§@³æ¤¸ªx«¬ÜÀx¼Ò¦¡ 258 8.2¨Ì¿àª`¤Jªx«¬ÜÀx¼Ò¦¡ 278 ²Ä¤T½gEntityFrameworkCore2.0°ò¦ ²Ä9³¹¼Æ¾Ú®wªíªº³Ð«Ø©M¾E²¾ 295 9.1¼Æ¾Ú®wªì©l¤Æµ¦²¤ 295 9.2°t¸mÄݩʬM®g©MÃö¨t¬M®g 298 9.2.1ÄݩʬM®g 300 9.2.2BackingFields 311 9.2.3AlternateKeys 316 9.2.4ShadowProperty 317 9.2.5OwnedEntities 321 9.2.6HasQueryFilterקï 322 9.2.7Ãö¨t¬M®g 327 9.2.8Ä~©Ó¬M®g 346 9.3¥N½X¾E²¾ 351 9.3.1±±¨î»Oµ{§Ç¾E²¾ 351 9.3.2WebÀ³¥Îµ{§Ç¾E²¾ 353 9.3.3¦hÓ¤W¤U¤å¾E²¾ 364 9.3.4¸}¤â¬[°f¦V¾E²¾ 367 ²Ä10³¹¼Æ¾Ú¾Þ§@©Mªì©l¤Æ¼Æ¾Ú 371 10.1¹êÅ骬ºA 371 10.2¼Æ¾Ú¾Þ§@ 371 10.2.1¼Æ¾Ú¬d¸ß 371 10.2.2¼Æ¾Ú«O¦s 393 10.3µL³s±µ¹êÅé 398 10.4ªì©l¤Æ¼Æ¾Ú 401 ²Ä¥|½gEntityFrameworkCore2.0¶i¶¥ ²Ä11³¹©Ê¯àÀu¤Æ¹ê½î 407 11.1AsNoTracking 407 11.2EF.Functions.Like 410 11.3¦Û©w¸q¼Ð¶q¨ç¼Æ 412 11.4Å㦡½sĶ¬d¸ß 416 11.5¤W¤U¤å¹ê¨Ò¦À 419 ²Ä12³¹¬d¸ß¹êÅ餸¼Æ¾Ú©M¼Ò«¬¼Æ¾ÚÅçÃÒ 424 12.1¬d¸ß¤¸¼Æ¾Ú 424 12.2¤º¸m¼Ò«¬ÅçÃÒ 426 12.3²Ä¤T¤èÂX®i¼Ò«¬ÅçÃÒ 429 ²Ä13³¹¤W¤U¤å¹ê¨Ò³Ð«Ø¤è¦¡ 432 13.1Å㦡³Ð«Ø¤W¤U¤å¹ê¨Ò 432 13.1.1±a¦³ºc³y¨ç¼ÆªºOnConfiguring¤èªk 432 13.1.2¶Ç»¼³s±µ¦r²Å¦ê°Ñ¼Æ¨ìºc³y¨ç¼Æ 433 13.1.3¨Ï¥Î¤£±a¨Ì¿àª`¤JªºDbContextOptions 433 13.2¨Ì¿àª`¤J®e¾¹³Ð«Ø¤W¤U¤å¹ê¨Ò 434 13.2.1±a¦³µL°Ñºc³y¨ç¼ÆªºDI 434 13.2.2±aDbContextOptionsªºDI 434 13.3.3¨Ï¥Îªx«¬DbContextOptions 435 13.3.4¨Ï¥ÎAddDbContext/AddDbContextPool 436 ²Ä14³¹¹ê²{¦h¯²¤á 437 ²Ä15³¹®·Àò¼fp¼Æ¾Ú 446 ²Ä16³¹Åܧó°lÂܵ¦²¤©M¤é§ÓºÞ²z 451 16.1Åܧó°lÂܵ¦²¤ 451 16.1.1INotifyPropertyChanged 453 16.1.2INotifyPropertyChanging 457 16.2¤é§ÓºÞ²z 458 16.2.1²K¥[±±¨î»O¥]¿é¥X 458 16.2.2¦Û©w¸q¤é§Ó¿é¥X 459 ²Ä17³¹xUnit³æ¤¸´ú¸Õ 462 17.1±±¨î»O³æ¤¸´ú¸Õ 463 17.2NETCoreWebÀ³¥Îµ{§Ç³æ¤¸´ú¸Õ 465 ²Ä18³¹¨Æ°È©M¦}µo¨R¬ð 468 18.1¨Æ°È 468 18.2¦}µo¨R¬ð 473 18.2.1ªì¯Åª©¸ÑªR 474 18.2.2¤¤¯Åª©¸ÑªR 478 18.2.3°ª¯Åª©¸ÑªR 482 ²Ä19³¹EntityFrameworkCore2.1«Ýµo¥¬ 488 |
§Ç¡G |