日期:2014-05-20  浏览次数:21161 次

用了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