c# - 如何将 EF Code First DbContext 绑定(bind)到 Asp.Net 数据源?

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

我创建了以下 Context 以与 Entity Framework Code First 一起使用:

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

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

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>

最佳答案

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

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

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

其他方法是使用 ObjectDataSource这将在GridView之间架起一座桥梁和 DbSet<Animal>但这可能会更复杂,特别是如果您需要双向数据绑定(bind)。

关于c# - 如何将 EF Code First DbContext 绑定(bind)到 Asp.Net 数据源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6327937/

相关文章:

c# - 设置 SmartNavigation=True 会导致 javascript offset.Width/offset.Height 出错

javascript - 单独进入那个div时显示<div>

c# - 删除相关表的多条记录

c# - StringLengthAttribute 是如何工作的?

c# - 使用 EF Code First 控制属性唯一性的最佳方法

c# - 添加对象后 Entity Framework 不加载导航属性

c# - 对于引用类型,使用 IEquatable<T> 如何减少强制转换的使用?

c# - 是否有 C# 的在线临时代码库? (JS Bin,jsFiddle 克隆)?

c# - 更多的资源困惑

jquery - .load 正在执行 post 而不是 get