我有一个网站,想从MySql转到SqlServer。
在我的网站中,我使用了BE层(业务实体)、BLL (业务逻辑层)、DAL (数据访问层),当然还有Web层(网站)。
我在web.config (应用程序设置)中创建了一个开关,告诉网站使用MySql或SqlServer作为DataProvider。
我用的是折页码..。效果很好但我的问题是..。
请让我知道你应该做什么,或者你的工作是什么。
namespace MyNameSpace.BE {
public class Product {
public int Id { get; set; }
public int Description { get; set; }
}
}
namespace MyNameSpace.DAL.Base {
public abstract class ProductManager {
public abstract List<Product> GetProductList();
}
}
namespace MyNameSpace.DAL.MySql {
public class ProductManager : Base.ProductManager {
public override List<Product> GetProductList() {
return new List<Product>();
}
}
}
namespace MyNameSpace.DAL.SqlServer {
public class ProductManager : Base.ProductManager {
public override List<Product> GetProductList() {
return new List<Product>();
}
}
}
namespace MyNameSpace.Bll {
/// do I have to use Singleton here ?? or not ?
public static class Factory {
private static ProductManager CreateProductManager() {
if (Config.Settings.Switches.DataProvider == DataProvider.MySql) {
return new DAL.MySql.ProductManager();
} else if (Config.Settings.Switches.DataProvider ==
DataProvider.SqlServer) {
return new DAL.SqlServer.ProductManager();
}
return null;
}
private static ProductManager _ProductManager;
public static ProductManager ProductManager {
get {
if (_ProductManager == null) {
_ProductManager = CreateProductManager();
}
return _ProductManager;
}
}
}
}
/// <summary>
/// for example ASP.NET page
/// </summary>
class MyPage {
public MyPage() {
List<Product> productList = Factory.ProductManager.GetProductList();
}
}发布于 2011-03-21 17:29:18
我建议您使用反转控制(IoC)容器。在Microsoft中可以找到这样一个IoC容器。
https://stackoverflow.com/questions/5380950
复制相似问题