一个SQL Server上具有相同表名的多个数据库。两个Linq to SQL类 - 模糊错误

时间:2012-12-21 04:57:47

标签: linq-to-sql datacontext

我正在尝试编写一个可以跨多个数据库更新用户帐户凭据的工具。这些数据库中的每一个基本上都支持同一应用程序的不同版本,因此每个数据库具有相同的表名。我只对每个数据库中一个名为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;
                    }
                }
            }

1 个答案:

答案 0 :(得分:1)

即使您使用的是新的数据上下文,代表您的表的类也将驻留在同一名称空间中 - 除非您指定了不同的名称空间。尝试为每个DataContexts的“Entity Namespace”属性提供唯一的命名空间。