如何将EF Code First DbContext绑定到Asp.Net DataSource

本文关键字:绑定 Asp Net DataSource DbContext First EF Code | 更新日期: 2023-09-27 17:59:04

我已经创建了以下Context,用于实体框架代码优先

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>

如何将EF Code First DbContext绑定到Asp.Net DataSource

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

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

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

另一种方法是使用ObjectDataSource,它将在GridViewDbSet<Animal>之间架起一座桥梁,但这可能会更复杂,尤其是如果您想要双向数据绑定。