0

最初にEntityFrameworkコードでバックアップされたwpfアプリケーションがあります。このアプリケーションを使用すると、ユーザーは新しいデータベースを作成し、wpf画面を使用してそれらを操作できます。新しいデータベースの作成は、最初にEntity Frameworkコードで非常に簡単であり、問​​題にはなりません。ただし、特定のwpfクライアントを彼が作業している現在のデータベースに関連付ける適切な方法を見つけるのに苦労しています。データベース接続文字列は、次のように構成されます。

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

上記のように、サーバー、データベース名、UserId、およびパスワードをクライアントマシンのどこかに保存して、クライアントがwpfアプリケーションを起動するときに使用する適切なデータベースを取得できるようにする必要があります。さらに複雑にするために、ユーザーはwpfアプリケーションを使用したい場合に、あるデータベースから別のデータベースに切り替えることができます。その場合、新しいデータベースを指すように、上記の4つの接続文字列パラメーターをリセットする必要があります。

WPFアプリケーションのパスワード保護は必要ありません。上記の内容はすべて、SQLServerデータベース接続文字列にのみ適用されます。

したがって、要約すると、新しいデータベースをwpfアプリケーションから動的に追加できるシナリオで、特定のwpfクライアントのSQLサーバー接続文字列情報を格納するための最良の方法は何でしょうか。

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 に答える