How to bind EF Code First DbContext to an Asp.Net DataSource?
I've created the following Context
to be used with Entity Framework Code First:
public class Context : DbContext
{
public DbSet<Animal> Animals { get; set; }
}
Now I would like to use this Context
in an Asp.Net application to perform CRUD oper开发者_如何学运维ations using a GridView
. I need to create a DataSource
to do the data binding. How would I go about?
The ASP part would look like this:
<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>
You can use EntityDataSource
as source for your GridView
and implement handler for ContextCreating
event:
protected void DataSource_ContextCreating(object sender, EntityDataSourceContextCreatingEventArgs e)
{
var context = new Context();
e.Context = ((IObjectContextAdapter)context).ObjectContext;
}
Then you just need to configure the data source in the page. EntitySetName
should be hopefully same as your DbSet
property name exposed on the context.
Other way is using ObjectDataSource
which will make a bridge between GridView
and DbSet<Animal>
but this can be more complex especially if you want bi-didrectional data binding.
精彩评论