C# 从左向右滚动datagrid视图时对象处理的异常

C# 从左向右滚动datagrid视图时对象处理的异常,c#,winforms,linq-to-sql,datagridview,windows-applications,C#,Winforms,Linq To Sql,Datagridview,Windows Applications,我使用LINQtoSQL类来管理数据,并使用以下代码将数据绑定到Windows窗体中的dataGridview。尝试从左向右滚动datagrdview时引发异常 这里涉及的两个表格是: 计费用户角色 罗莱德峰 罗兰胺 创建DTS 更新 计费用户 UserId PK//这也在其他一些表中引用 RoleId FK 用户名 密码 名字 姓氏 创建DTS 更新 创建表查询如下所示 CREATE TABLE [dbo].[billing_UserRole]( bk_UserRoleId BIGINT ID

我使用LINQtoSQL类来管理数据,并使用以下代码将数据绑定到Windows窗体中的dataGridview。尝试从左向右滚动datagrdview时引发异常

这里涉及的两个表格是:

计费用户角色

罗莱德峰

罗兰胺

创建DTS

更新

计费用户

UserId PK//这也在其他一些表中引用

RoleId FK

用户名

密码

名字

姓氏

创建DTS

更新

创建表查询如下所示

CREATE TABLE [dbo].[billing_UserRole](
bk_UserRoleId BIGINT IDENTITY(100,1) NOT NULL,
bk_UserRoleName NVARCHAR(128) NOT NULL,
bk_CreatedTS DATETIME NULL,
bk_UpdatedTS DATETIME NULL,
CONSTRAINT [PK_billingUserRole] PRIMARY KEY CLUSTERED
(
    [bk_UserRoleId] ASC 
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]


/* TABLE NAME : billing_User */
CREATE TABLE [dbo].[billing_User](
    bk_UserId BIGINT IDENTITY(1,1) NOT NULL,
    bk_Username NVARCHAR(256) NOT NULL,
    bk_Password NVARCHAR(2048) NOT NULL DEFAULT('none'),
    bk_FirstName NVARCHAR(256) NOT NULL,
    bk_LastName NVARCHAR(256) NOT NULL,
    bk_MobileNo NVARCHAR(128) NOT NULL,
    bk_Address NVARCHAR(2048) NULL DEFAULT('none'),
    bk_Remarks NVARCHAR(2048) NULL DEFAULT('none'),
    bk_UserRoleId BIGINT NOT NULL,
    bk_CreatedTS DATETIME NULL,
    bk_UpdatedTS DATETIME NULL,
CONSTRAINT [PK_billingUser] PRIMARY KEY CLUSTERED 
(
    [bk_UserId] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY],
CONSTRAINT [FK_billingUser_billingUserRole] FOREIGN KEY(bk_UserRoleId) REFERENCES [dbo].[billing_UserRole](bk_UserRoleId)
) 
表单中的代码用于在表单加载时绑定datagridview

 private void UserManagementForm_Load(object sender, EventArgs e)
        {
            try
            {
                using (BillingKioskDataLayerDataContext dc = new BillingKioskDataLayerDataContext())
                {

                    Table<billing_User> UserTable = dc.GetTable<billing_User>();
                    var UserList = UserTable.Select(o=>o).ToList();
                    billing_UserBindingSource.DataSource = UserList;
                    dataGridView1.DataSource = billing_UserBindingSource;


                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);   
            }

        }
堆栈跟踪:

 at System.Data.Linq.DataContext.GetTable(Type type)
   at System.Data.Linq.CommonDataServices.GetDataMemberQuery(MetaDataMember member, Expression[] keyValues)
   at System.Data.Linq.CommonDataServices.DeferredSourceFactory`1.ExecuteKeyQuery(Object[] keyValues)
   at System.Data.Linq.CommonDataServices.DeferredSourceFactory`1.Execute(Object instance)
   at System.Data.Linq.CommonDataServices.DeferredSourceFactory`1.DeferredSource.GetEnumerator()
   at System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable`1 source)
   at System.Data.Linq.EntityRef`1.get_Entity()
   at BillingKiosk.billing_User.get_billing_UserRole() in e:\XGHProjects\BillingKiosk\BillingKiosk\BillingKioskDataLayer.designer.cs:line 663

最可能的情况是,您正在相关实体中遇到延迟或延迟加载列的问题。 可以使用DataLoadOptions.LoadWith方法包含相关列


顺便说一句:如果情况确实如此,那么很容易确定:删除datacontext上的Using()。[仅用于诊断…]。如果工作正常,延迟加载…

Nope@grantwiney没有内部异常。但这是我在异常窗口{“无法访问已处置对象。对象名称:'DataContext access after Dispose.”中看到的情况。}在上面添加了堆栈跟踪
 at System.Data.Linq.DataContext.GetTable(Type type)
   at System.Data.Linq.CommonDataServices.GetDataMemberQuery(MetaDataMember member, Expression[] keyValues)
   at System.Data.Linq.CommonDataServices.DeferredSourceFactory`1.ExecuteKeyQuery(Object[] keyValues)
   at System.Data.Linq.CommonDataServices.DeferredSourceFactory`1.Execute(Object instance)
   at System.Data.Linq.CommonDataServices.DeferredSourceFactory`1.DeferredSource.GetEnumerator()
   at System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable`1 source)
   at System.Data.Linq.EntityRef`1.get_Entity()
   at BillingKiosk.billing_User.get_billing_UserRole() in e:\XGHProjects\BillingKiosk\BillingKiosk\BillingKioskDataLayer.designer.cs:line 663