0

我首先有一个由实体框架代码备份的 wpf 应用程序。该应用程序允许用户创建新数据库并使用 wpf 屏幕处理它们。首先在 Entity Framework 代码中创建新数据库非常简单,这不是问题。但是,我正在努力寻找一种将特定 wpf 客户端与他正在处理的当前数据库相关联的体面方法。数据库连接字符串的构造如下所示。

providerConnectionString = "Server=" + serverName + ";" + "Database=" + databaseName +
            "; User Id = userId; Password = password; Persist Security Info=True;";

正如您在上面看到的,我必须在客户端计算机上的某处存储服务器、数据库名称、用户 ID 和密码,以便在客户端启动 wpf 应用程序时可以选择正确的数据库以供使用。为了增加一些复杂性,如果用户希望使用 wpf 应用程序,他可以从一个数据库切换到另一个数据库。在这种情况下,我将不得不重置上述四个连接字符串参数以指向新数据库。

我不想为 WPF 应用程序提供任何密码保护。上面写的所有内容仅适用于 SQL Server 数据库连接字符串。

因此,总而言之,在可以从 wpf 应用程序动态添加新数据库的情况下,为特定 wpf 客户端存储 sql server 连接字符串信息的最佳方式是什么。

4

1 回答 1

0

如何在代码中存储默认连接,然后允许用户在 WPF 应用程序中更改连接详细信息,然后将其存储在独立存储中。因此,连接将针对每个 WPF 客户端用户。或者,如果您必须在第一个实例中设置它 - 检查登录用户,然后找到数据库连接信息,然后将其存储在隔离存储中,以供后续代码访问。

例如向这个对象添加一个键值对

IsolatedStorageFile isolatedStorage = IsolatedStorageFile.GetUserStoreForAssembly();


Dictionary<string,string> dict = new Dictionary<string,string>();

添加到您的字典...

IsolatedStorageFile isoStore = 
          IsolatedStorageFile.GetStore( IsolatedStorageScope.User 
          | IsolatedStorageScope.Assembly, null, null );
        Stream stream = new 
          IsolatedStorageFileStream(someFileName, 
          FileMode.Create, isoStore );

        if ( stream != null )
        {
            try
            {
                // Serialize the object into the IsolatedStorage.
                IFormatter formatter = new BinaryFormatter();
                formatter.Serialize( stream, (Dictionary)dict);
            }
            finally
            {
                stream.Close();
            }
        }
于 2012-12-17T08:46:18.767 回答