ASP.NET vNext Problemi con MVC ed Entity Framework

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

Domanda

Sto cercando di creare un piccolo progetto ASP.NET vNext WebAPI + AngularJS + Entity Framework. Ma ovviamente, molto è cambiato in EF7, quindi sto riscontrando i seguenti problemi:

Ho cambiato il project.json come segue:

"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"

Nella mia classe DataContext, sto provando il seguente:

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>());
        }

     } 
}

}

Prima di tutto: perché lo spazio dei nomi System.Data.Entity modificato in Microsoft.Data.Entity ? Non riesco a trovare nulla su questo cambiamento in qualsiasi articolo Microsoft MSDN !!

Secondo: l'intero Database.SetInitializer non funziona più. Si consiglia di utilizzare lo spazio dei nomi Microsoft.Data.Entity.Infrastructure ma quella classe Database non contiene un metodo SetInitializer .

Risposta accettata

Poiché EF7 è ancora in pre-rilascio, non troverete ancora alcuna documentazione su di esso negli articoli MSDN; per ulteriori informazioni, è necessario consultare EF7 GitHub Wiki .

Mentre provi EF7, tieni presente che questa è una fase molto iniziale dello sviluppo della nuova base di codici EF e ci sono molte funzionalità che sono parzialmente implementate o non ancora disponibili.

Credo che SetInitializer sia una di quelle cose che è stata implementata in modo completamente diverso; il team sta evitando metodi statici per migliorare la testabilità del framework.

Si noti inoltre che l' ultima versione di EF7 è 7.0.0-beta3 , ma la wiki fornisce informazioni su come utilizzare le build notturne . (L'utilizzo di build notturne può essere difficile, dati i gravi cambiamenti da quando è stato rilasciato VS2015 CTP6).


Risposta popolare

EF7 è più leggero e modulare per supportare nuove piattaforme e archivi dati non relazionali. Le modifiche sono abbastanza fondamentali, quindi alcune API sottostanti sono cambiate, inclusi i loro spazi dei nomi.

La nuova natura leggera significa che meno cose accadranno automaticamente dietro le quinte rispetto alle versioni precedenti. Gli inizializzatori del database sono stati rimossi, quindi i database non verranno creati su richiesta. Invece, dovresti controllare tu stesso questo processo usando le Migrazioni del Database . Per maggiori informazioni: ASP.NET vNext (MVC6) Ground Up # 3 - Entity Framework 7



Related

Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché