ASP.NET vNext MVC et problèmes Entity Framework

asp.net-core entity-framework entity-framework-core

Question

J'essaie de créer un petit projet ASP.NET vNext WebAPI + AngularJS + Entity Framework. Mais évidemment, beaucoup de choses ont changé dans EF7 et je rencontre donc les problèmes suivants:

J'ai changé le project.json comme suit:

"dependencies": {
    "Microsoft.AspNet.Server.IIS": "1.0.0-beta1",
    "EntityFramework": "7.0.0-beta1",
    "EntityFramework.SqlServer": "7.0.0-beta1",
    "EntityFramework.Commands": "7.0.0-beta1",
    "Microsoft.AspNet.Mvc": "6.0.0-beta1",
    "Microsoft.AspNet.Diagnostics": "1.0.0-beta1",
    "Microsoft.Framework.ConfigurationModel.Json": "1.0.0-beta1"

Dans ma classe DataContext, j'essaie ce qui suit:

using System;
using Project1.Models;
using Microsoft.Data.Entity;

namespace Project1.DataAccess
{
    public class DataContext
    {
        public DbSet<Website> Websites { get; set; }

        public DataContext()
        {
            Microsoft.Data.Entity.Infrastructure.Database.SetInitializer(new DropCreateDatabaseIfModelChanges<DataContext>());
        //Database.SetInitializer(new DropCreateDatabaseAlways<DataContext>());
        }

     } 
}

}

Tout d'abord: pourquoi l'espace de noms System.Data.Entity remplacé par Microsoft.Data.Entity ? Je ne trouve rien à propos de ce changement dans les articles Microsoft MSDN !!

Deuxièmement: L'ensemble de Database.SetInitializer ne fonctionne plus. Il est recommandé d'utiliser l'espace de noms Microsoft.Data.Entity.Infrastructure mais cette classe de base de données ne contient pas de méthode SetInitializer .

Réponse acceptée

Comme EF7 est toujours en version préliminaire, vous ne trouverez pas encore de documentation à ce sujet dans les articles MSDN; vous aurez besoin de consulter le Wiki EF7 GitHub pour plus d’informations.

Lorsque vous testez EF7, n'oubliez pas qu'il s'agit d'un stade très précoce du développement du nouveau code de base EF et que de nombreuses fonctionnalités sont partiellement implémentées ou non disponibles.

Je crois que SetInitializer est une de ces choses qui a été implémentée de manière complètement différente. l'équipe évite les méthodes statiques afin d'améliorer la testabilité du framework.

Notez également que la dernière version de EF7 est 7.0.0-beta3 , mais que le wiki fournit des informations sur l'utilisation des versions nocturnes . (L'utilisation de versions nocturnes peut s'avérer difficile compte tenu des importants changements intervenus depuis la sortie de VS2015 CTP6.)


Réponse populaire

EF7 est plus léger et modulaire pour prendre en charge de nouvelles plates-formes et des magasins de données non relationnels. Les modifications étant assez fondamentales, certaines API sous-jacentes ont été modifiées, y compris leurs espaces de noms.

La nouvelle nature légère signifie que moins de choses se passeront automatiquement dans les coulisses par rapport aux versions précédentes. Les initialiseurs de base de données ont été supprimés afin que les bases de données ne soient pas créées à la demande. Au lieu de cela, vous êtes censé contrôler vous-même ce processus à l'aide de la migration de bases de données . Pour plus d'informations: ASP.NET vNext (MVC6) Ground Up # 3 - Entity Framework 7



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi