用了using后,Entity framework(EF)的 表.ToList()方法出错?
using (CodeFirst db = new CodeFirst())
{
dataGridView1.DataSource = db.User.ToList();
dataGridView2.DataSource = db.UserExt.ToList();
}
---------------------------
“DataGridView 默认错误”对话框
---------------------------
DataGridView 中发生以下异常:
System.Reflection.TargetInvocationException: 对象“System.Data.Entity.DynamicProxies.User_CC3393A653B8340ECECEF27D8F5ECC520AE83804D1B30A4BE45010FEB1DDF22F”上的属性访问器“UserBook”发生以下异常: “此 ObjectContext 实例已释放,不可再用于需要连接的操作。” ---> System.ObjectDisposedException: 此 ObjectContext 实例已释放,不可再用于需要连接的操作。
在 System.Data.Objects.ObjectContext.EnsureConnection()
在 System.Data.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption)
在 System.Data.Objects.ObjectQuery`1.Execute(MergeOption mergeOption)
在 System.Data.Objects.DataClasses.EntityCollection`1.Load(List`1 collection, MergeOption mergeOption)
在 System.Data.Objects.DataClasses.EntityCollection`1.Load(MergeOption mergeOption)
在 System.Data.Objects.DataClasses.RelatedEnd.Load()
在 System.Data.Objects.DataClasses.RelatedEnd.DeferredLoad()
在 System.Data.Objects.Internal.LazyLoadBehavior.LoadProperty[TItem](TItem propertyValue, String relationshipName, String targetRoleName, Boolean mustBeNull, Object wrapperObject)
在 System.Data.Objects.Internal.LazyLoadBehavior.<>c__DisplayClass7`2.<GetInterceptorDelegate>b__1(TProxy proxy, TItem item)
在 System.Data.Entity.DynamicProxies.User_CC3393A653B8340ECECEF27D8F5ECC520AE83804D1B30A4BE45010FEB1DDF22F.get_UserBook()
--- 内部异常堆栈跟踪的结尾 ---
在 System.ComponentModel.ReflectPropertyDescriptor.GetValue(Object component)
在 System.Windows.Forms.DataGridView.DataGridViewDataConnection.GetValue(Int32 boundColumnIndex, Int32 columnIndex, Int32 rowIndex)
要替换此默认对话框,请处理 DataError 事件。
---------------------------
确定
---------------------------
[解决办法]
1、使用Include方法,加载全部属性
2、禁用代理类,不过这样不能使用导航属性
[解决办法]
去掉using