J'ai un projet de formulaires Web utilisant EF codefirst pour conserver les données. Je voudrais utiliser un GridView et EntityDataSource, afin d'économiser l'écriture CRUD. Est-ce possible?
Puis-je convertir mon DBContext en un ObjectContext attendu par EntityDataSource?
Voici ce que j'ai essayé:
<asp:EntityDataSource ID="OrdersDataSource" runat="server" ContextTypeName="SomeNamespace.Models.ShopDBContext"
EnableFlattening="False" EntitySetName="Orders" EntityTypeFilter="Order" EnableDelete="False"
EnableUpdate="False" Include="OrderLines" OrderBy="it.Id">
</asp:EntityDataSource>
<asp:GridView ID="OrdersGridView" runat="server" AllowPaging="True" AllowSorting="True"
AutoGenerateColumns="True" DataKeyNames="Id" DataSourceID="OrdersDataSource" />
Cependant, je reçois cette exception:
Impossible de convertir un objet de type "SomeNamespace.Models.ShopDBContext" en type "System.Data.Objects.ObjectContext".
Essaye ça:
var context = new YourDbContext();
var adapter = (IObjectContextAdapter)context;
var objectContext = adapter.ObjectContext;
Essayez celui-ci ->
protected void OrdersDataSource_ContextCreating(object sender, EntityDataSourceContextCreatingEventArgs e)
{
var context = new YourContext();
e.Context = ((IObjectContextAdapter)context).ObjectContext;
}
Après 2 jours de difficultés, j'ai trouvé cela link qui m'a beaucoup aidé.Je travaille avecVS 2012 et j'ai eu le même problème avec DBContext.
Selon le lien, dans VS2012, le générateur de code par défaut a été modifié pour générer des entités POCO et DBContext par opposition aux entités dérivées d'EntityObject et ObjectContext qui étaient par défaut dans VS2010.
. entités basées et contexte dérivé d'ObjectContext.