C# 哪个asp.net控件可用于绑定一个EF对象?

C# 哪个asp.net控件可用于绑定一个EF对象?,c#,asp.net,entity-framework,controls,C#,Asp.net,Entity Framework,Controls,当我想从MainTable中获取更多行时,我使用了GridView和property SelectMethod,这样我就可以使用FK like(在GridView内部)从连接到MainTable的每个表中访问数据 我想知道我是否可以使用某种方法绑定一个对象MainTable,在这个控件中,我可以进行一些html css设计,并访问(查看、编辑)与不断绑定的特定记录相关的所有数据。或者对于这种情况,至少有比GridView更好的方法吗?ObjectContext实例已被释放,不能再用于需要连接的操

当我想从MainTable中获取更多行时,我使用了GridView和property SelectMethod,这样我就可以使用FK like(在GridView内部)从连接到MainTable的每个表中访问数据


我想知道我是否可以使用某种方法绑定一个对象MainTable,在这个控件中,我可以进行一些html css设计,并访问(查看、编辑)与不断绑定的特定记录相关的所有数据。或者对于这种情况,至少有比GridView更好的方法吗?

ObjectContext实例已被释放,不能再用于需要连接的操作。

此错误意味着您正试图在上下文被释放后访问它(错误非常清楚地指出:)。EF对导航属性使用延迟加载。因此,所发生的是,您正在访问一个导航属性,EF需要从上下文中获取数据,但上下文不再存在

有两种选择:

  • 首先,您需要重新创建上下文,或者不处理它 在你打这个电话之前
  • 您可以告诉EF立即加载此导航属性,而不是延迟加载 您可以使用
    Include()
    方法完成2,该方法指示EF急切地加载所选的导航属性。查看更多信息

    编辑:如果要关闭延迟加载,可以通过不将导航属性标记为
    virtual
    或在上下文级别将此代码添加到构造函数来实现每个属性:

    public class MyContext : DbContext 
    { 
        public MyContext() 
        { 
            this.Configuration.LazyLoadingEnabled = false; 
        } 
    }
    

    谢谢,这很有效!但还有一个问题,是否可以使用include with object代替od string path?我试图访问对象中与db相关的所有内容,这样我就可以简单地更新edmx模型,而不是在db中的某些内容发生更改时重写字符串,ASP.NET中有一个用于单个db记录的组件,名为
    DetailsView
    。有一个通用版本的include in
    DbExtensions
    我编辑了我的文章,其中提供了有关禁用延迟加载的详细信息。
    The ObjectContext instance has been disposed and can no longer be used for operations that require a connection.
    
    public class MyContext : DbContext 
    { 
        public MyContext() 
        { 
            this.Configuration.LazyLoadingEnabled = false; 
        } 
    }