单个应用程序中的多个数据库更

时间:2011-03-29 11:17:25

标签: c# .net database automation relational-database

我想构建一个小的.net应用程序,它可以使用相同的数据更新多个数据库。 这将是某种自动应用。我有一些想法,但在开始开发之前,我正在寻找高级人员的一些想法。请分享您的观点。

感谢您的帮助。谢谢!!

2 个答案:

答案 0 :(得分:0)

您可以使用DataSet

这些可以序列化,然后应用到另一个数据库。假设所有目标数据库都是同步的,这应该没有太多问题。但是,您必须避免使用存储过程和其他“交互式”数据库功能。

基本上,您将在脱机模式下使用数据集,然后将更改应用于“a”数据库。重复一遍,你将更新'''数据库。

请注意,您最有可能更好地使用某些数据库级复制(Mysql,Postgresql,Oracle,SQLServer都以这种或那种方式支持)

答案 1 :(得分:0)

从低级视图中,它应枚举所有目标数据库并保存对它们的更改。

从架构的角度来看,您应该考虑代理设计模式的使用。因此,您将在应用程序中使用抽象IDatabase,但会随时从代理切换到单个数据库实现:

// database abstraction
interface IDatabase
{
    void SaveSomeData(IData data);
}

// example of implementation
class SQLDatabase : IDatabase
{
    public SQLDatabase(string connection)
    {...}

    abstract void SaveSomeData(IData data)
    {
        // establish db connection using given connection and run sql queries against it.
    }
}

// proxy which can save data to several databases.
class DatabaseSaver : IDataBase
{
    private IDatabase[] _databases;

    public DatabaseSaver(IDatabase[] databases)
    {
        _databases = databases;
    }

    void SaveSomeData(IData data)
    {
        foreach(var db in _databases)
            db.SaveSomeData(data);
        // TODO: error handling situations are omitted.
    }
}

我希望这有帮助!