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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
Entity Framework »ù´¡
 
À´Ô´£ºwww.cnblogs.com ·¢²¼ÓÚ£º 2017-6-29
  3226  次浏览      30
 

Ò»¡¢Ê²Ã´ÊÇEntity Framework

΢Èí¹Ù·½ÌṩµÄORM¹¤¾ß£¬ORMÈÿª·¢ÈËÔ±½ÚÊ¡Êý¾Ý¿â·ÃÎʵĴúÂëʱ¼ä£¬½«¸ü¶àµÄʱ¼ä·Åµ½ÒµÎñÂß¼­²ã´úÂëÉÏ¡£EFÌṩ±ä¸ü¸ú×Ù¡¢Î¨Ò»ÐÔÔ¼Êø¡¢¶èÐÔ¼ÓÔØ¡¢²éѯÊÂÎïµÈ¡£¿ª·¢ÈËԱʹÓÃLinqÓïÑÔ£¬¶ÔÊý¾Ý¿â²Ù×÷Èçͬ²Ù×÷Object¶ÔÏóÒ»Ñùʡʡ£

EFÓÐÈýÖÖʹÓó¡¾°£¬1. ´ÓÊý¾Ý¿âÉú³ÉClass£¬2.ÓÉʵÌåÀàÉú³ÉÊý¾Ý¿â±í½á¹¹£¬3. ͨ¹ýÊý¾Ý¿â¿ÉÊÓ»¯Éè¼ÆÆ÷Éè¼ÆÊý¾Ý¿â£¬Í¬Ê±Éú³ÉʵÌåÀà¡£

O/RMÊÇʲô£¿

ORM Êǽ«Êý¾Ý´æ´¢´ÓÓò¶ÔÏó×Ô¶¯Ó³Éäµ½¹ØÏµÐÍÊý¾Ý¿âµÄ¹¤¾ß¡£ORMÖ÷Òª°üÀ¨3¸ö²¿·Ö£ºÓò¶ÔÏó¡¢¹ØÏµÊý¾Ý¿â¶ÔÏó¡¢Ó³Éä¹ØÏµ¡£ORMʹÀàÌṩ×Ô¶¯»¯CRUD£¬Ê¹¿ª·¢ÈËÔ±´ÓÊý¾Ý¿âAPIºÍSQLÖнâ·Å³öÀ´¡£

¶þ¡¢Entity Framework ¼Ü¹¹

EDM £¨ÊµÌåÊý¾ÝÄ£ÐÍ£©£ºEDM°üÀ¨Èý¸öÄ£ÐÍ£¬¸ÅÄîÄ£ÐÍ¡¢ Ó³ÉäºÍ´æ´¢Ä£ÐÍ¡£

¸ÅÄîÄ£ÐÍ ©U ¸ÅÄîÄ£ÐͰüº¬Ä£ÐÍÀàºÍËüÃÇÖ®¼äµÄ¹ØÏµ¡£¶ÀÁ¢ÓÚÊý¾Ý¿â±íµÄÉè¼Æ¡£

´æ´¢Ä£ÐÍ ©U ´æ´¢Ä£ÐÍÊÇÊý¾Ý¿âÉè¼ÆÄ£ÐÍ£¬°üÀ¨±í¡¢ ÊÓͼ¡¢ ´æ´¢µÄ¹ý³ÌºÍËûÃǵĹØÏµºÍ¼ü¡£

Ó³Éä ©U Ó³Éä°üº¬ÓйØÈçºÎ½«¸ÅÄîÄ£ÐÍÓ³Éäµ½´æ´¢Ä£Ð͵ÄÐÅÏ¢¡£

LINQ to Entities ©U LINQ to Entities ÊÇÒ»ÖÖÓÃÓÚ±àдÕë¶Ô¶ÔÏóÄ£Ð͵IJéѯµÄ²éѯÓïÑÔ¡£Ëü·µ»ØÔÚ¸ÅÄîÄ£ÐÍÖж¨ÒåµÄʵÌå¡£

Entity SQL: Entity SQL ÊÇÁíÒ»ÖÖ¯ÀàËÆÓÚL2EµÄÑÔÓµ«Ïà¸øL2EÒª¸´ÔӵĶ࣬ËùÒÔ¿ª·¢ÈËÔ±²»µÃ²»µ¥¶ÀѧϰËü¡£

Object Services(¶ÔÏó·þÎñ)£ºÊÇÊý¾Ý¿âµÄ·ÃÎÊÈë¿Ú£¬¸ºÔðÊý¾Ý¾ßÌ廯£¬´Ó¿Í»§¶ËʵÌåÊý¾Ýµ½Êý¾Ý¿â¼Ç¼ÒÔ¼°´ÓÊý¾Ý¿â¼Ç¼ºÍʵÌåÊý¾ÝµÄת»»¡£

Entity Client Data Provider£ºÖ÷ÒªÖ°ÔðÊǽ«L2E»òEntity Sqlת»»³ÉÊý¾Ý¿â¿ÉÒÔʶ±ðµÄSql²éѯÓï¾ä£¬ËüʹÓÃAdo.netͨÐÅÏòÊý¾Ý¿â·¢ËÍÊý¾Ý¿É»ñÈ¡Êý¾Ý¡£

ADO.Net Data Provider£ºÊ¹Óñê×¼µÄAdo.netÓëÊý¾Ý¿âͨÐÅ

Èý¡¢Entity FrameworkÔËÐл·¾³

EF5ÓÉÁ½²¿·Ö×é³É£¬EF apiºÍ.net framework 4.0/4.5£¬¶øEF6ÊǶÀÁ¢µÄEntityFramework.dll£¬²»ÒÀÀµ.net Framework¡£Ê¹ÓÃNuGet¼´¿É°²×°EF¡£

ËÄ¡¢´´½¨ÊµÌåÊý¾ÝÄ£ÐÍ

ʹÓÃÏòµ¼´´½¨ÊµÌåÀ࣬»ò¼üÌí¼Ó£¬Éµ¹ÏʽµÄ~

Ìí¼ÓÍê³ÉÖ®ºó£¬.configÎļþÖлáÌí¼ÓÒÔÏÂÅäÖÃ

Context & Entity Àࣺ

ÿ¸öEntity Data Model Éú³ÉÒ»¸öcontextÀ࣬ÀàÊý¾Ý¿âÿ¸ö±íÉú³ÉÒ»¸öentityÀà¡£ÈçÔÚSchool.edmxÖаüº¬µÄÁ½¸öÖØÒªµÄÎļþ{EDM Name}.context.ttºÍ{EDM Name}.tt:

School.Context.tt£ºT4Ä£°åÓÃÓÚÉú³ÉµÄcontextÀ࣬¿ÉÒÔ´ÓĿ¼½á¹¹Öп´µ½School.Context.ttϰüº¬Ò»¸öSchool.Context.csÎļþ¡£

School.tt£ºÓÃÓÚÉú³É±íÓ³ÉäµÄʵÌåÀà¡£EntityÀàÊÇPOCOÀà¡£ÈçStudentÉú³É

Î塢ģ°åä¯ÀÀÆ÷

ÒÔSchoolDBΪÀý£¬Çл»µ½Model ViewÊÓͼÏ£¬¿´µ½Ààͼ½á¹¹£º

Áù¡¢DBContext

µÚËĽÚÖÐÌáµ½EDMÉú³ÉSchoolDBEntitiesÀ࣬¸ÃÀà´ÓSystem.Data.Entity.DbContextÀà¼Ì³Ð¡£EntityFramework4.1ÖÐContextÀà´ÓObjectContextÀà¼Ì³Ð¡£DbContextÀàÓëObjectContextÀàËÆ£¬Ëü¶ÔObjcetContextÀà½øÐаü×°¸üÀûÓÚ¿ª·¢µÄÈýÖÖģʽ£ºCodeFirst¡¢Model First¡¢Database First.

DbContextÊÇEntityFrameworkºÜÖØÒªµÄ²¿·Ö£¬Á¬½ÓÓòÄ£ÐÍÓëÊý¾Ý¿âµÄÇÅÁº£¬ÊÇÓëÊý¾Ý¿âͨÐŵÄÖ÷ÒªÀà¡£

DbContextÖ÷Òª¸ºÔðÒÔÏ»£º

EntitySet:£ºDbContext°üº¬ÁËËùÓÐÓ³Éäµ½±íµÄentities

Querying£º½«Linq-To-EntitiesתÒëΪSql²¢·¢Ë͵½Êý¾Ý¿â

Change Tracking£º´ÓÊý¾Ý¿â»ñÈ¡entitiesºó±£Áô²¢¸ú×ÙʵÌåÊý¾Ý±ä»¯

Persisting Data£º¸ù¾Ýentity״ִ̬ÐÐInsert¡¢update¡¢deleteÃüÁî

Caching£ºDbContextµÄĬÈϵÚÒ»¼¶»º´æ£¬ÔÚÉÏÏÂÎÄÖеÄÉúÃüÖÜÆÚÖд洢entity

Manage Relationship£ºDbContextÔÚDbFirstģʽÖÐʹÓÃCSDL¡¢MSL¡¢SSDL¹ÜÀí¶ÔÏó¹ØÏµ£¬Code firstÖÐʹÓÃfluent api ¹ÜÀí¹ØÏµ

Object Materialization£ºDbContext½«ÎïÀí±íת³ÉentityʵÀý¶ÔÏó

DEMO

DbContextʵÀý»¯£º

Æß¡¢Entity FrameworkÖеÄEntityÀàÐÍ

POCO Entity (Plain Old CLR Object)£º

²»ÒÀÀµÓÚÈκÎFrameworkµÄÀàµÄÀࣨalso known as persistence-ignorant objects£©£¬ÎªEntity Data ModelÉú³ÉCRUDÃüÁî·þÎñ¡£

Dynamic Proxy (POCO Proxy):

Dynamic ProxyÊÇÔËÐÐʱPOCOÀàµÄ´úÀíÀ࣬ÀàËÆPOCOÀàµÄ°ü×°¡£Dynamic ProxyÔÊÐíÑÓ³Ù¼ÓÔØ£¨Lazy loading£©£¬×Ô¶¯¸ú×Ù¸ü¸Ä¡£POCO Entity±ØÐèÂú×ãÒÔϼ¸µã²ÅÄÜתΪPOCO Proxy£º

1. ±ØÐèÉùÃ÷Ϊpublic Àà

2. ²»¿ÉÒÔÊÇsealedÀà

3. ²»¿ÉÒÔÊdzéÏóÀà

4. µ¼º½ÊôÐÔ±ØÐèÊÇpublic,vitual(Entity°üº¬Á½ÖÖÊôÐÔ£¬±êÁ¿ÊôÐÔScalar properties£ºEntity±¾ÉíµÄ×Ö¶ÎÖµ£¬Navigation properties£ºÆäËüentityµÄÒýÓÃÈç°à¼¶-ѧÉú)

5. ¼¯ºÏÊôÐÔ±ØÐèÊÇ ICollection<T>

6. ProxyCreationEnabled Ñ¡Ïî±ØÐèÊÇtrue

°Ë¡¢Entity Relationships:

¾Å¡¢ Entity Lifecycle

ÔÚÎÒÃÇ×öCRUD²Ù×÷ʱ£¬ÒªÏÈÁ˽âEntityFrameworkÈçºÎ¹ÜÀíʵÌå״̬¡£Ã¿¸öʵÌåµÄÉúÃüÖÜÆÚÄÚ¶¼»áÔÚDbContextÉÏÏÂÎÄÖб£´æÒ»¸ö״̬£¬·Ö±ðÊÇ

Added Deleted Modified Unchanged Detached

Ê®¡¢Code First¡¢DBFirst¡¢Model First

CodeFirst ÁìÓòÉè¼ÆÊ±Ïȶ¨ÒåʵÌåÀ࣬ÓÃʵÌåÀàÉú³ÉÊý¾Ý¿â

DbFirst ´ÓÊý¾Ý¿âÉú³ÉʵÌåÀà

Model First ʹÓÃVisual StudioʵÌåÉè¼ÆÆ÷£¬Éè¼ÆER£¬Í¬Ê±Éú³ÉEntityÀàºÍDB

ʮһ¡¢Ê¹Óòéѯ

ÈýÖÖ²éѯ·½Ê½1) LINQ to Entities, 2) Entity SQL, and 3) Native SQL

LINQ to Entities£º

LINQ Method syntax:

Entity SQL:

Native SQL:

Ê®¶þ¡¢¸ú×Ù±ä¸üÓë³Ö¾Ã»¯³¡¾°

ÔÚÁ¬½Ó״̬ϳ־û¯ÓëÍÑ»ú״̬ϳ־û¯

Á¬»ú״̬ϳ־û¯£¬ÔÚͬһ¸öDbContextÖв»ÐèÒªÏú»ÙEntity£¬Ö±½ÓдÈëÊý¾Ý¿â

ÍÑ»ú״̬³Ö¾Ã»¯Ö¸¶ÁÈ¡ºÍ±£´æEntityÔÚÁ½¸ö²»Í¬µÄDbContextÖУ¬Context2²»ÖªµÀEntityµÄ¸üÐÂ״̬£¬ËùÒÔ±ØÐè֪ͨContext2µ±Ç°µÄEntity×öÁ˺ÎÖÖ¸üС£

ContextÖ»ÔÚDbSetÉϸú×ÙÌí¼ÓºÍɾ³ý

ÕýÈ·µÄÌí¼ÓºÍɾ³ý

ÒÔÏ´úÂëÔÚListÖÐÌí¼ÓºÍɾ³ý²»Æð×÷Óã¬Ö»ÓиüÉúÓÐЧ

ÍÑ»úʵÌå

ÍÑ»úʵÌå¹ÜÀíÒªÏȸ½¼Óµ½Context

Ìí¼Ó¶à¸ö¹ØÏµÊµÌåʱÓëÌí¼Óµ¥¸öʵÌåÒ»Ñù£¬¸üйØÏµÊµÌåʱÐèÒª¸ú×Ùÿ¸öʵÌåµÄ״̬¡£

Ê®Èý Entity Framework²¢·¢´¦Àí

Ìí¼ÓRowVersion£¬ÀàÐÍΪTimeStamp×ֶΣ¬ÔÚEDMÖÐXÐ޸IJ¢·¢ÊôÐÔΪFixed¡£EF¸üÐÂʵÌåʱ»áÏȼì²éRowVersion£¬Èç¹û·¢ÏÖRowVersion²»Ò»Ö£¬ÔòÅ׳öDbUpdateConcurrencyExceptionÒì³£

Ê®ËÄ Ì°À·¼ÓÔØ¡¢¶èÐÔ¼ÓÔØÓ붨Ïò¼ÓÔØ

̰À·¼ÓÔØ£ºÊ¹ÓÃInclude()£¬×Ô¶¯¼ÓÔØ¹ØÁªÊµÌå

Ö´ÐÐSql

¶èÐÔ¼ÓÔØ£ºÑÓ³Ù¼ÓÔØ¶ÔÏó¹ØÁªµÄʵÌ壬Óõ½Ê±ÔÙ¼ÓÔØ£¬EFĬÈÏΪLazyLoading

¶¨Ïò¼ÓÔØ£ºReference()ºÍCollection() ·½·¨

Ê®Î壺ִÐÐSQL

·µ»ØÊµÌå

 

Ö´ÐÐSQLÃüÁî

   
3226 ´Îä¯ÀÀ       30
 
Ïà¹ØÎÄÕÂ

Éî¶È½âÎö£ºÇåÀíÀôúÂë
ÈçºÎ±àд³öÓµ±§±ä»¯µÄ´úÂë
ÖØ¹¹-ʹ´úÂë¸ü¼ò½àÓÅÃÀ
ÍŶÓÏîÄ¿¿ª·¢"±àÂë¹æ·¶"ϵÁÐÎÄÕÂ
 
Ïà¹ØÎĵµ

ÖØ¹¹-¸ÄÉÆ¼ÈÓдúÂëµÄÉè¼Æ
Èí¼þÖØ¹¹v2
´úÂëÕû½àÖ®µÀ
¸ßÖÊÁ¿±à³Ì¹æ·¶
 
Ïà¹Ø¿Î³Ì

»ùÓÚHTML5¿Í»§¶Ë¡¢Web¶ËµÄÓ¦Óÿª·¢
HTML 5+CSS ¿ª·¢
ǶÈëʽC¸ßÖÊÁ¿±à³Ì
C++¸ß¼¶±à³Ì