2

我需要以不担心传入 DBMS 的方式编写应用程序。它可以是 Oracle、PostgreSQL、MySql 等。

本地 dbms 将使用我将加载数据的 SQL Server 2008。

需要/计划做什么...

  1. 用户有文本框,他可以在其中为每个可能的 dbms 创建/保存本地数据库/配置文件中的连接字符串值。
  2. 然后,应用程序应该使用它来形成连接字符串,并一次连接一个或同时连接到传入数据库(如果可能)。
  3. 检索值并将它们放入本地数据库中。
  4. 无需将数据写入传入数据库。仅 1 路。

简而言之,一个独立于数据库的应用程序仅基于一组查询读取值并将它们放入指定的数据库中。

有可能做到这一点或听起来很神奇吗?

我可以开发任何解决方案/示例/技术吗?

应用程序基于 Silverlight + ASP.NET 技术。

4

4 回答 4

3

你应该搜索和研究设计模式。看看这个链接。另请查看LLBLGen
如果您想选择自己的解决方案,那么您必须分层工作。定义松散耦合的数据访问层 (DAL)。一种方法是使用接口。为数据库连接定义一个接口,然后让 DBMS 的每个类来实现它。然后,您可以在以下几行中获取数据库连接字符串。
来源

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;
    }
  }
}
于 2012-05-06T19:24:26.980 回答
2

这是相当基本的要求,您应该能够使用对象关系映射框架之一轻松实现它。

如果我要推荐一个 - 使用 NHibernate。

Silverlight + ASP.NET 与您持久化数据的方式无关,只要您将其持久化在服务器端即可。对于 Silverlight 应用程序,您还需要一些 WCF Web 服务来在客户端和服务器之间进行通信。

于 2012-05-06T19:20:52.737 回答
0

与其他答案相同,我强烈建议您查看以下问题https://stackoverflow.com/questions/132676/which-orm-for-net-would-you-recommend它应该会给您很好的休息ORM 下来了。

于 2012-05-06T19:43:16.627 回答
0

以其他答案所说的内容为基础。以这种方式思考你的问题。

你有“前端(asp.net/silver light)”<->“数据存储”

你想要的是中间的一步

“前端”<->“数据库无知层”<->“数据存储”

这个中间层可能是一个 ORM,但真正的 ORM(除了数千行代码和多年的精炼经验之外)是存储库和工作单元模式的实现。

于 2012-05-06T20:29:50.940 回答