ObjectContext实例已被释放,不能再用于需要连接的操作。C#
我试图将一个列表转换为数据集,但该表似乎有一个关系,不让我走 这是我尝试将列表转换为数据集的代码ObjectContext实例已被释放,不能再用于需要连接的操作。C#,c#,asp.net-mvc,html,visual-studio,razor,C#,Asp.net Mvc,Html,Visual Studio,Razor,我试图将一个列表转换为数据集,但该表似乎有一个关系,不让我走 这是我尝试将列表转换为数据集的代码 我假设T是EF中的某个上下文对象?此错误通常意味着您试图读取加载的DbContext之外的导航属性。如果要完整地传输此对象,则在拉入数据时需要包含所有导航属性。请使用try-catch并找出内部异常的含义。这是因为您正在使用块将数据访问(EF上下文实例化等)包装在一个中。你不应该这样做。您的上下文应该是请求范围。您只需将其设置为控制器上的字段即可处理此问题,但最好使用您选择的DI容器将其插入。我想T
我假设T是EF中的某个上下文对象?此错误通常意味着您试图读取加载的DbContext之外的导航属性。如果要完整地传输此对象,则在拉入数据时需要包含所有导航属性。请使用try-catch并找出内部异常的含义。这是因为您正在使用块将数据访问(EF上下文实例化等)包装在一个
中。你不应该这样做。您的上下文应该是请求范围。您只需将其设置为控制器上的字段即可处理此问题,但最好使用您选择的DI容器将其插入。我想T是EF中的某个上下文对象?此错误通常意味着您试图在加载的DbContext之外读取导航属性。如果要完整地传输此对象,则在拉入数据时需要包含所有导航属性。请使用try-catch并找出内部异常的含义。这是因为您正在使用
块将数据访问(EF上下文实例化等)包装在一个中。你不应该这样做。您的上下文应该是请求范围。您只需在控制器上将其设置为字段即可处理该问题,但最好使用您选择的DI容器将其注入。
public static DataSet ToDataSet<T>(this IList<T> list)
{
Type elementType = typeof(T);
DataSet ds = new DataSet();
DataTable t = new DataTable();
ds.Tables.Add(t);
//add a column to table for each public property on T
foreach (var propInfo in elementType.GetProperties())
{
Type ColType = Nullable.GetUnderlyingType(propInfo.PropertyType) ?? propInfo.PropertyType;
t.Columns.Add(propInfo.Name, ColType);
}
//go through each property on T and add each value to the table
foreach (T item in list)
{
DataRow row = t.NewRow();
foreach (var propInfo in elementType.GetProperties())
{
row[propInfo.Name] = propInfo.GetValue(item, null) ?? DBNull.Value;
}
t.Rows.Add(row);
}
return ds;
}