我正在尝试编写一个可以跨多个数据库更新用户帐户凭据的工具。这些数据库中的每一个基本上都支持同一应用程序的不同版本,因此每个数据库具有相同的表名。我只对每个数据库中一个名为opususer的表感兴趣。
我能够创建第一个Linq to SQL类,并使用复选框列表创建所选项的集合,并将其发送到循环的方法,并应更新用户凭据。当我有一个DataContext时,这工作正常,但当我添加另一个Linq到SQL类并尝试重新创建相同的东西,除了在不同的数据库上,我收到几个Ambiguity错误和“该成员被定义多次”错误。
我不明白,因为LinqToSQL类指向一个完全不同的数据库,尽管表名是相同的,但为什么要像datacontext那样重要呢?
我尝试过使用一个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;
}
}
}
答案 0 :(得分:1)
即使您使用的是新的数据上下文,代表您的表的类也将驻留在同一名称空间中 - 除非您指定了不同的名称空间。尝试为每个DataContexts的“Entity Namespace”属性提供唯一的命名空间。