Linq to sql 一台SQL server上具有相同表名的多个数据库。两个Linq到SQL类-歧义错误

Linq to sql 一台SQL server上具有相同表名的多个数据库。两个Linq到SQL类-歧义错误,linq-to-sql,datacontext,Linq To Sql,Datacontext,我正在尝试编写一个工具,可以跨多个数据库更新用户帐户凭据。这些数据库基本上都支持同一应用程序的不同版本,因此每个数据库都有相同的表名。我只对每个数据库中一个名为opususer的表感兴趣 我能够创建第一个LINQtoSQL类,并使用复选框列表创建所选项目的集合,并将其发送到一个方法,该方法将循环并更新用户凭据。当我有一个DataContext时,这很好,但是当我向SQL类添加另一个Linq并尝试重新创建相同的东西时,除了在不同的数据库上,我会收到几个模糊错误和“成员定义了多次”错误 我不理解Li

我正在尝试编写一个工具,可以跨多个数据库更新用户帐户凭据。这些数据库基本上都支持同一应用程序的不同版本,因此每个数据库都有相同的表名。我只对每个数据库中一个名为opususer的表感兴趣

我能够创建第一个LINQtoSQL类,并使用复选框列表创建所选项目的集合,并将其发送到一个方法,该方法将循环并更新用户凭据。当我有一个DataContext时,这很好,但是当我向SQL类添加另一个Linq并尝试重新创建相同的东西时,除了在不同的数据库上,我会收到几个模糊错误和“成员定义了多次”错误

我不理解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;
                    }
                }
            }

即使您正在使用新的数据上下文,表示表的类也将驻留在同一名称空间中,除非您指定不同的名称空间。尝试为每个DataContext的“实体命名空间”属性指定唯一的命名空间

太棒了!!!非常感谢您提供的信息。从这一点上,我能够想出如何解决我的问题。我执行了以下操作,使其正常工作-非常感谢,真的帮助了我,谢谢。1.打开*.dbml。2.单击设计图面-而不是任何实体。3.打开“属性”窗口。4.将上下文命名空间和实体命名空间属性更改为所需的属性。(我将它们命名为相同的名称)然后更新using语句,将其前缀为新名称空间using(dbClincomm_2431.clincomm_2431; datacontext Data=new dbClincomm_2431.clincomm_2431; datacontext()),然后更新表名dbClincomm_2431.opuser CheckUser=Data.opusers的名称空间,就是这样。一切都很顺利。再次感谢。