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 operations 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>
To use code-first for an existing database, right click on your project in Visual Studio -> Add -> New Item.. Select ADO.NET Entity Data Model in the Add New Item dialog box and specify the model name (this will be a context class name) and click on Add. This will open the Entity Data Model wizard as shown below.
Step 1 − First, create the console application from File → New → Project… Step 2 − Select Windows from the left pane and Console Application from the template pane. Step 3 − Enter EFCodeFirstDemo as the name and select OK. Step 4 − Right-click on your project in the solution explorer and select Manage NuGet Packages…
Right-click anywhere on the design surface, and select Update Model from Database. In the Update Wizard, select the Refresh tab and then select Tables > dbo > Student. Click Finish.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With