C# 从左向右滚动datagrid视图时对象处理的异常
我使用LINQtoSQL类来管理数据,并使用以下代码将数据绑定到Windows窗体中的dataGridview。尝试从左向右滚动datagrdview时引发异常 这里涉及的两个表格是: 计费用户角色 罗莱德峰 罗兰胺 创建DTS 更新 计费用户 UserId PK//这也在其他一些表中引用 RoleId FK 用户名 密码 名字 姓氏 创建DTS 更新 创建表查询如下所示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
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