【问题标题】:How to bind EF Code First DbContext to an Asp.Net DataSource?如何将 EF Code First DbContext 绑定到 Asp.Net 数据源?
【发布时间】:2023-04-03 17:49:01
【问题描述】:

我创建了以下Context 用于Entity FrameworkCode First

public class Context : DbContext
    {
        public DbSet<Animal> Animals { get; set; }
    }

现在我想在 Asp.Net 应用程序中使用这个 Context 来使用 GridView 执行 CRUD 操作。我需要创建一个DataSource 来进行数据绑定。我该怎么办?

ASP 部分如下所示:

<asp:GridView runat="server" DataSourceID="animalDataSource" DataKeyNames="AnimalID" AutoGenerateColumns="false">   
    <Columns>
        <asp:BoundField DataField="Description" HeaderText="Description" />
        <asp:CommandField ShowCancelButton="true" ShowEditButton="true" ShowDeleteButton="true" />
    </Columns>
</asp:GridView>

【问题讨论】:

  • 很好的问答,谢谢,我重新编写了:-crud +objectcontext 以尝试帮助搜索。因为我没有通过搜索DBContext ObjectContext GridView 找到这个。重新标记没有帮助:-\

标签: c# asp.net entity-framework datasource objectcontext


【解决方案1】:

您可以使用EntityDataSource 作为GridView 的源并为ContextCreating 事件实现处理程序:

protected void DataSource_ContextCreating(object sender, EntityDataSourceContextCreatingEventArgs e)
{
    var context = new Context();
    e.Context = ((IObjectContextAdapter)context).ObjectContext;
}

那么你只需要在页面中配置数据源即可。 EntitySetName 应该与您在上下文中公开的 DbSet 属性名称相同。

另一种方法是使用ObjectDataSource,它将在GridViewDbSet&lt;Animal&gt; 之间架起一座桥梁,但这可能更复杂,特别是如果您想要双向数据绑定。

【讨论】:

  • 很好,它完成了这项工作。唯一的问题是更新会抛出异常:“Update is disabled for this control。”
  • 哈哈哈......但这很容易解决。谢谢大佬的回答!!
  • 将此添加到您的 aspx 中的 EntityDataSource:EnableInsert="True" EnableUpdate="True"
猜你喜欢
  • 2011-10-26
  • 1970-01-01
  • 2016-06-10
  • 2011-08-27
  • 1970-01-01
  • 2011-11-23
  • 2011-06-17
  • 1970-01-01
  • 2012-03-15
相关资源
最近更新 更多