无法访问已处置 object。 Object name: '在 Dispose 之后访问的 DataContext
Cannot access a disposed object. Object name: 'DataContext accessed after Dispose
标题是我使用LINQ2SQL通过以下方法生成数据后访问join objects后抛出的异常:
public static bool Get(int skip, int take, ListSortDirection direction, out List<Post> posts)
{
bool result;
using (var db = new MyDataContext())
{
try
{
posts = db.Posts
.Where(p => !p.IsDeleted)
.OrderBy(p => p.DateTimeCreated, direction)
.Skip(skip)
.Take(take)
.ToList();
result = true;
}
catch (Exception)
{
// Log the exception
posts = new List<Post>();
result = false;
}
}
return result;
}
下面是我所指的连接示例 object。在上面的方法中,我选择了 collection 的帖子,并且 Userprofile table 的 userprofileID 被加入(在 .dbml 和数据库服务器中)到 Post 的 UserprofileID table。
问题是,当我检查生成的 collection 帖子时,链接的用户配置文件 returns 出现以下异常:
new System.Collections.Generic.Mscorlib_CollectionDebugView(posts).Items[0].Userprofile' 引发了 'System.ObjectDisposedException'
类型的异常
我试过禁用数据上下文中的 DeferredLoadingEnabled 属性并使用 DataLoadOptions:
var dlo = new DataLoadOptions();
dlo.LoadWith<Post>(p => p.Userprofile);
db.LoadOptions = dlo;
这导致了同样的异常;
还有什么我应该看的吗?
谢谢!
想通了。在数据上下文的部分版本的 onCreate 事件处理程序中,我添加了 DataLoadOptions。不确定为什么它在该方法中不起作用(可能是粗手指),但这就是我想出的。
public partial class MyDataContext
{
partial void OnCreated()
{
var options = new DataLoadOptions();
options.LoadWith<Vote>(v => v.Post);
options.LoadWith<Vote>(v => v.Userprofile);
LoadOptions = options;
}
}
...还有那些在没有发表评论的情况下两次投票否决我的人 - 帮我一个忙,养一对。
标题是我使用LINQ2SQL通过以下方法生成数据后访问join objects后抛出的异常:
public static bool Get(int skip, int take, ListSortDirection direction, out List<Post> posts)
{
bool result;
using (var db = new MyDataContext())
{
try
{
posts = db.Posts
.Where(p => !p.IsDeleted)
.OrderBy(p => p.DateTimeCreated, direction)
.Skip(skip)
.Take(take)
.ToList();
result = true;
}
catch (Exception)
{
// Log the exception
posts = new List<Post>();
result = false;
}
}
return result;
}
下面是我所指的连接示例 object。在上面的方法中,我选择了 collection 的帖子,并且 Userprofile table 的 userprofileID 被加入(在 .dbml 和数据库服务器中)到 Post 的 UserprofileID table。
问题是,当我检查生成的 collection 帖子时,链接的用户配置文件 returns 出现以下异常:
new System.Collections.Generic.Mscorlib_CollectionDebugView(posts).Items[0].Userprofile' 引发了 'System.ObjectDisposedException'
类型的异常我试过禁用数据上下文中的 DeferredLoadingEnabled 属性并使用 DataLoadOptions:
var dlo = new DataLoadOptions();
dlo.LoadWith<Post>(p => p.Userprofile);
db.LoadOptions = dlo;
这导致了同样的异常;
谢谢!
想通了。在数据上下文的部分版本的 onCreate 事件处理程序中,我添加了 DataLoadOptions。不确定为什么它在该方法中不起作用(可能是粗手指),但这就是我想出的。
public partial class MyDataContext
{
partial void OnCreated()
{
var options = new DataLoadOptions();
options.LoadWith<Vote>(v => v.Post);
options.LoadWith<Vote>(v => v.Userprofile);
LoadOptions = options;
}
}
...还有那些在没有发表评论的情况下两次投票否决我的人 - 帮我一个忙,养一对。