複数のデータベースでユーザー アカウントの資格情報を更新するツールを作成しようとしています。これらのデータベースはそれぞれ、基本的に同じアプリケーションの異なるバージョンをサポートしているため、各データベースは同じテーブル名を持っています。これらの各データベースの opususer という 1 つのテーブルだけに関心があります。
最初の Linq to SQL クラスを作成し、チェックボックス リストを使用して、選択したアイテムのコレクションを作成し、ループしてユーザー資格情報を更新する必要があるメソッドに送信しました。これは、1 つの DataContext がある場合は正常に機能しますが、別の Linq to SQL クラスを追加して、別のデータベースを除いて同じものを再作成しようとすると、いくつかのあいまいなエラーと「メンバーが複数回定義されています」というエラーが表示されます。
テーブル名は同じですが、LinqToSQLクラスが完全に異なるデータベースを指しているのでわかりませんが、データコンテキストがそれを別々に保つ必要があるのはなぜですか?
1 つの DataContext を使用してエイリアスを追加しようとしましたが、これが可能かどうかはわかりません。私はASP.NETが初めてです...
if (DatabaseName == "clincomm_243x")
{
using (UserAccountDataContext Data = new UserAccountDataContext()) // database clincomm_243x
{
string UserName = TextBoxUserName.Text.ToUpper();
opususer CheckUser = Data.opususers
.SingleOrDefault(opususer => opususer.username == UserName && opususer.active == true);
if (CheckUser == null || TextBoxUserName.Text.Length ==0)
{
TextBoxResult.Visible = true;
TextBoxResult.Text = "Username " + UserName + " does not exist. Please check and try again!";
}
else
{
TextBoxResult.Text = "";
TextBoxResult.Text = "User " + UserName + " has been found.";
TextBoxResult.Visible = true;
TextBoxResult.Visible = true;
TextBoxResult.Text += "\nAttempting to update user account details.....\n";
// Set the new values for the record returned
CheckUser.password = "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4";
CheckUser.hashtype_code = "SHA-256";
CheckUser.unsuccessfullogons = 0;
CheckUser.active = true;
DateTime newPasswordExpiryDate = DateTime.Now.Date.AddYears(10);
CheckUser.passwordexpirationdate = newPasswordExpiryDate;
Data.SubmitChanges();
TextBoxResult.Text += "\nUser Account " + UserName + " has been successfully updated\n";
TextBoxResult.Text += "\nPassword has now been set to 1234 and will not expire until " + newPasswordExpiryDate;
}
}
}