2017-05-26 5 views
1

Je viens d'installer la communauté Microsoft Visual Studio 2017 et j'essaie d'obtenir des informations sur la technologie la plus récente. Je ne suis pas encore familier avec MVC et je ne connais absolument pas EF Core 1.1.Entity Framework Core 1.1 et la migration

J'ai suivi quelques cours sur Pluralsight sur ASP.NET Core et EF Core, mais il semble qu'il y ait eu des changements depuis que ces enregistrements ont été réalisés.

Quand je lance « Add-Migration Inital » pour se connecter à la base de données, je reçois toujours:

System.InvalidOperationException: Le type d'entité « Catégorie » nécessite une clé primaire à définir. à Microsoft.EntityFrameworkCore.Internal.ModelValidator.ShowError (message String) à Microsoft.EntityFrameworkCore.Internal.ModelValidator.Validate (modèle IModel) à Microsoft.EntityFrameworkCore.Internal.RelationalModelValidator.Validate (modèle IModel) à Microsoft.EntityFrameworkCore .Infrastructure.ModelSource.CreateModel (contexte DbContext, IConventionSetBuilder conventionSetBuilder, IModelValidator validateur) à System.Collections.Concurrent.ConcurrentDictionary 2.GetOrAdd(TKey key, Func 2 valueFactory) à Microsoft.EntityFrameworkCore.Internal.DbContextServices.CreateModel() à Microsoft.EntityFrameworkCore.Internal. LazyRef 1.get_Value() at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScoped(ScopedCallSite scopedCallSite, ServiceProvider provider) at Microsoft.Extensions.DependencyInjection.ServiceProvider.<>c__DisplayClass16_0.<RealizeService>b__0(ServiceProvider provider) at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetService[T](IServiceProvider provider) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitTransient(TransientCallSite transientCallSite, ServiceProvider provider) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, ServiceProvider provider) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitTransient(TransientCallSite transientCallSite, ServiceProvider provider) at Microsoft.Extensions.DependencyInjection.ServiceProvider.<>c__DisplayClass16_0.<RealizeService>b__0(ServiceProvider provider) at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType) at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider) at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.AddMigration(String name, String outputDir, String contextType) at Microsoft.EntityFrameworkCore.Design.OperationExecutor.AddMigrationImpl(String name, String outputDir, String contextType) at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.<>c__DisplayClass3_0 1.b__0() à Microsoft.EntityFrameworkCore.Design.OperationExecutor.Opera tionBase.Execute (Action) Le type d'entité 'Catégorie' nécessite la définition d'une clé primaire.

Voici un code pertinent:

Category.cs

public class Category 
{ 
    [Key] 
    public int CategoryId; 
    public String CategoryName; 
} 

ICategoryRepository.cs

espace de noms Dokumentbasen6.Model { public interface ICategoryRepository { IEnumerable Catégories {get; } Catégorie GetCategoryById (int CategoryId); }}

CategoryRepository.cs

namespace Dokumentbasen6.Model 

{ public interface ICategoryRepository { IEnumerable Catégories {get; } Catégorie GetCategoryById (int CategoryId); }}

DokumentbasenContext.cs

public class DokumentbasenContext : DbContext 
{ 
    public DokumentbasenContext(DbContextOptions<DokumentbasenContext> options) : base(options) 
    { 

    } 
    public DbSet<Document> Dokuments { get; set; } 
    public DbSet<Category> Categories { get; set; } 
    public DbSet<Standard> Standards { get; set; } 
    public DbSet<Member> Members { get; set; } 
} 

Quand je construis le projet je le cadre cible .NETCoreApp 1.0, mais je l'ai changé Cadre cible .NetCoreApp 1.1.

D'avance, merci beaucoup pour votre soutien!

Cordialement,

Jon Haakon Ariansen

Répondre

0

Microsoft.EntityFrameworkCore.Tools.DotNet doit être ajouté à votre projet. Cliquez avec le bouton droit sur le projet et sélectionnez Edit *.csproj. Ensuite, ajoutez ce qui suit:

<ItemGroup> 
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0-preview2-final" /> 
    </ItemGroup> 

Note: la version est la plus récente au moment de ce poste et changera probablement à l'avenir.

Maintenant, vous pouvez commencer à créer les migrations. Allez dans le dossier de votre projet. Le moyen le plus simple pour faire un clic droit sur le projet et Open Folder in File Explorer. Ensuite, tapez cmd dans la barre d'adresse du File Explorer pour ouvrir une invite de commande dans ce dossier.

Maintenant utiliser la commande suivante pour créer la migration:

dotnet ef migrations add InitialCreate -c DokumentbasenContext

Vous devriez maintenant voir un dossier Migrations dans votre projet.