如何将EF代码优先DbContext绑定到Asp.Net数据源?

问题描述

| 我创建了以下“ 0”以用于“实体框架代码优先”:
public class Context : DbContext
    {
        public DbSet<Animal> Animals { get; set; }
    }
现在,我想在Asp.Net应用程序中使用此ѭ0来使用ѭ3来执行CRUD操作。我需要创建一个“ 4”来进行数据绑定。我该怎么办? 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
用作ѭ3source的源,并实现
ContextCreating
事件的处理程序:
protected void DataSource_ContextCreating(object sender,EntityDataSourceContextCreatingEventArgs e)
{
    var context = new Context();
    e.Context = ((IObjectContextAdapter)context).ObjectContext;
}
然后,您只需要在页面中配置数据源。
EntitySetName
应该与上下文中显示的
DbSet
属性名称相同。 另一种方法是使用
ObjectDataSource
,这将在
GridView
DbSet<Animal>
之间架起一座桥梁,但这可能会更加复杂,尤其是在您需要双向数据绑定的情况下。