¦b¶µ¥Øªº¶}µo¹Lµ{¤¤¡A¦b³]p¼Ò¦¡ªº·§©ÀÁÙ¨S¦³¥X¨Ó®É¡A§Ų́º®ÉÔ¦b½s¼gµ{§Ç®É¡A©¹©¹¦pªG¶µ¥Øªº¼Æ¾Ú®w¬O±Ä¥ÎSQL Server¡AµM«á¥Î¤á¤S·Q´«¨ä¥¦¼Æ¾Ú®w¦pOracle®É¡A§ÚÌ´N»Ýn¹ï¨ä¥N½X¶i¦æ«¼g¡A¯S§O¬O¦b¤@¨Ç³n¥óªº²£«~¤Æ¹D¸ô¤¤¡A§Ṵ́µ¥X¨Óªº²£«~¦pªGÅý¥Î¤á¥i¥H¦³¿ï¾Üªº¥h¿ï¨ú¦UºØ¼Æ¾Ú®w¡A¨ºµLºÃ¹ï¥Î¤á´£¨Ñ¤F«Ü¤jªº¤è«K¡C
¦Û±q¤u¼t¼Ò¦¡ªº³]p²z©À¥X¨Ó¥H«á¡A³o¤@¤Á¹ê²{´NÅܱo®e©ö±o¦h¡A¦pªG¤j®a¹ï·L³nªºPETSHOP¦³¬ã¨sªº¸Ü¡A¨º´N¤£·|¯¥Í¤F¡A±qPETSHOP3.0¶}©l¡A·L³n´N¶}©l±Ä¥Î¤F¦h¼Æ¾Ú®w¾Þ§@«Y²ÎªºÀ³¥Î¡C¼Æ¾Ú¤u¼t¥Dn¬O³q¹L§â¼Æ¾Ú®wªº³s±µ°µ¦¨¤@Ó©â¶Hªº¤u¼t¡A¦p©R¦WDALFactory¡Aµ{§Ç¤¤©Ò¦³ªº¼Æ¾Ú®w³s±µ³£³q¹L³oÓ¤u¼tÃþ¨Ó²£¥Í¡A¥Î¨Ót³d®Ú¾Ú°t¸m¤å¥ó°ÊºA³Ð«Ø«Y²Î©Ò»Ýªº¼Æ¾Ú³X°ÝÅÞ¿è¹ï¶H¡C
§ÚÌ´N®³PETSHOP¨ÓÁ|¨Ò»¡©ú¡APETSHOP¦b¦w¸Ëªº®ÉÔ¡A·|´£¥Ü§ÚÌ¿ï¾Ü¤°¤\¼Æ¾Ú®w¡A¦p®Ú¾ÚÅã¥Üªº¬OSQL Server¼Æ¾Ú®wÁÙ¬OOracle¼Æ¾Ú®w¡A¥i¥H±o¨ìWeb.configªº¸`ÂI¤¤ªº¡G
| <add key=" WebDAL " value=" PetShop.SQLServerDAL "/> <add key=" OrdersDAL " value=" PetShop.SQLServerDAL "/> |
©ÎªÌ¬O
| <add key=" WebDAL " value=" PetShop.OracleDAL "/> <add key=" OrdersDAL " value=" PetShop. OracleDAL "/> |
µM«á¦bDALFactory¶µ¥ØªºDataAccessÃþ¤¤½Õ¥Î¼Æ¾Ú®wªº³s±µ¡A¥N½X¦p¤U¡G
| private static readonly string path = ConfigurationManager.AppSettings["WebDAL"]; |
µM«á¦A¬Ý¤U±ªº¥N½X¡G
| public static PetShop.IDAL.ICategory CreateCategory() { string className = path + ".Category"; return (PetShop.IDAL.ICategory)Assembly.Load(path).CreateInstance(className); } |
¦p§Ų́ϥΪº¬OSQL Server¡A¨º¤\string className = path + ".Category"ªð¦^ªº´N¬OPetShop.SQLServerDAL. Category¡AµM«á¦A¥ÎAssembly.Load¥[¸üPetShop.SQLServerDAL.DLL¡A¦P®É³Ð«ØPetShop.SQLServerDAL.Categoryªº¹ê¨Ò¡A¨Ã¥H±µ¤f(PetShop.IDAL.ICategory)Ãþ«¬ªð¦^¡C³o¼Ë·~°ÈÅÞ¿è¼hBLL½Õ¥ÎICategory±µ¤f®É´N·|¥ÎPetShop.SQLServerDAL.CategoryÃþªº¹ê²{¥N½X¡C
³o®ÉԥΤá´N¤£»Ýnª¾¹D«á»O¨Ï¥Îªº¨ì©³¬Oþ¤@ºØ¼Æ¾Ú®w¡A¥¦¥un½Õ¥Î±µ¤f´N¦æ¤F¡A¦b±µ¤f¤¤©w¸q¤Fn¨Ï¥Îªº¤èªk¡A·í½Õ¥Î±µ¤f®É·|®Ú¾Ú¨ãÅ骺±¡ªp¦A¥h½Õ¥Î©³¼h¼Æ¾Ú³X°Ý¾Þ§@¡C¦Ó²{¦b³oÓDALFactory´N¬OÃöÁä¡A·í·~°ÈÅÞ¿è¼hn¾Þ§@¼Æ¾Ú®w®É¡ADALFactory·|®Ú¾Ú¨ãÅ鱡ªp¦A¥h¨Ï¥Î¥Í¦¨ªºµ{§Ç¶°SQLServerDAL©ÎªÌOracleDAL¤¤ªº¤@Ó¡A³o¼Ë°µªº¦n³B¬O¹ï©ó·~°ÈÅÞ¿è¼h¤ÎWEB¶±¼hªºµ{§Ç¤£·|¦]¬°©³¼h¼Æ¾Ú³X°Ýªºµ{§ÇÅܰʦӨü¨ì¼vÅT¡A¦]¬°¥u»Ýn¦b·~°ÈÅÞ¿è¼h¤¤½Õ¥Î±µ¤f´N¦æ¤F¡C
¦³¥i¯à¦³¤H·|´£¡A§Ú¦P¼Ë¦b¤u¼tÃþùر´£¨Ñ¤U±ªº¤èªk¥h¹ê²{½Õ¥Î¼Æ¾Ú®w¡G
| public static readonly DALFactory dalFa;string webDal = ConfigurationManager.AppSettings["WebDAL"];switch (webDal){case "SQLServerDAL":dalFa = new SqlServerDALFactory();break;case "OracleDAL":dalFa = new OracleDALFactory();break;default:dalFa = new SqlServerDALFactory();break;} |
¦Ó³oÓ®ÉÔ¦pªG§Ú̼W¥[¤F·sªº¼Æ¾Ú®w³X°Ý¤è¦¡¡A´N¥²¶·±oק惡³¡¤Àªºµ{§Ç¡AµM«á¦A«·s¶i¦æ½sͳ¡¸p¡A¦Ó¦P¼Ë§Q¥Î¤Ï®gªº¾÷¨î¥h¹ê²{ªº®ÉÔ¡A§ÚÌÁ|Ó¨Ò¤l¦pªG«Y²Î¤¤²{¦b»Ýn¼W¥[MySQL¼Æ¾Ú®wªº®ÉÔ¡A§Ų́Ӭݬݥ¦ªº¥N½Xªº¥iÂX®i©Ê¡A§ÚÌ¥i¥H¤ñ¸ûPETSHOP¤¤ªºSQLServerDAL¤U±ªºCategory.cs¤å¥ó©MOracleDAL¤U±ªºCategory.cs¤å¥óªº¥N½X¥iª¾¹D¡A¦]¬°¥¦Ì³£Ä~©Ó¤FICategory±µ¤f¡A©Ò¥HÃþ¹ê²{ªº¤èªk³£¬Û¦P¡A³o®ÉÔ§ÚÌ¥u»Ýn¼W¥[¤@ÓMySqlDAL¶µ¥Ø¡A¨ä¤U±ªºCategory.cs¤å¥ó¤]¦P¼Ë¿í´`ICategory±µ¤fªº¤èªk¡A³o®ÉÔ§Ú̦A¥hקאּ³oÓ®ÉÔ³£¤£»Ýn«·s¹ï¶µ¥Ø¶i¦æ½sĶ¡A¥u»Ýn¼W¥[MySqlDAL.DLL¤å¥ó´N¥i¡AµL½×¼W¥[¦h¤Ö¼Æ¾Ú®w¡A³£¬O¤@¥ó«Ü²³æªº¾Þ§@¡A¼Æ¾Ú¤u¼t¾Þ§@¦h¼Æ¾ÚªºÀuÂI´N©úÅã¥i¨£¡C

RSSq¾\