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

时间:2011-06-13 08:00:03

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

我创建了以下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>

1 个答案:

答案 0 :(得分:11)

您可以使用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>之间的桥梁,但这可能会更复杂,尤其是如果您想要双重数据绑定。