我需要以这样的方式编写应用程序,它不应该担心传入的DBMS。它可以是Oracle,PostgreSQL,MySql等。
本地dbms将使用我将加载数据的SQL Server 2008。
需要/计划做什么...
简而言之,一个独立于数据库的应用程序,只能根据设置的查询读取值并将它们放在指定的数据库中。
是否可以这样做或听起来神奇?
我可以开发任何解决方案/样品/技术吗?
应用程序基于Silverlight + ASP.NET技术。
答案 0 :(得分:3)
您应该搜索和研究设计模式。看看这个link。还可以查看LLBLGen
如果您想选择自己的解决方案,那么您必须分层工作。定义松散耦合的数据访问层(DAL)。一种方法是使用接口。定义用于数据库连接的接口,然后让DBMS的每个类实现它。然后,您可以在以下行中获取数据库连接字符串。
Source:
public static IDbConnection GetConnection(string connectionName)
{
ConnectionStringSettings ConnectString = ConfigurationManager.ConnectionStrings[connectionName];
//Use a Factory class, to which you pass the ProviderName and
//it will return you object for that particular provider, you will have to implement it
DbProviderFactory Factory = DbProviderFactories.GetFactory(ConnectString.ProviderName);
IDbConnection Connection = Factory.CreateConnection();
Connection.ConnectionString = ConnectString.ConnectionString;
return Connection;
}
然后你就可以使用它:
public static DataTable GetData()
{
using (IDbConnection Connection = GetConnection("SiteSqlServer"))
{
IDbCommand Command = Connection.CreateCommand();
Command.CommandText = "DummyCommand";
Command.CommandType = CommandType.StoredProcedure;
Connection.Open();
using (IDataReader reader = Command.ExecuteReader())
{
DataTable Result = new DataTable();
Result.Load(reader);
return Result;
}
}
}
答案 1 :(得分:2)
这是相当基本的要求,您应该能够使用对象关系映射框架之一轻松实现它。
如果我推荐一个 - 使用NHibernate。
Silverlight + ASP.NET与您持久保存数据的方式无关,只要您将其保留在服务器端即可。对于Silverlight应用程序,您还需要一些WCF Web服务来在客户端和服务器之间进行通信。
答案 2 :(得分:0)
与其他答案一致,我强烈建议您查看以下问题https://stackoverflow.com/questions/132676/which-orm-for-net-would-you-recommend它应该给你很好的分解ORM。
答案 3 :(得分:0)
以其他答案所说的为基础。以这种方式思考你的问题。
你有“前端(asp.net/silver light)”< - > “数据存储”
你想要的是中间的一步
“前端”< - > “数据库无知层”< - > “数据存储”
这个中间层可能是一个ORM,但所有ORM确实是(除了数以千计的代码行和多年的精炼经验之外)是存储库和工作单元格的实现。